IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:引用类型

共 2 篇相关文章

IT 累计浏览 3,367

JavaScript 类型浅解

作者从JavaScript类型的核心议题出发,深入浅出地解析了这门语言的类型体系。文章首先厘清了基本类型(如Undefined、String)与引用类型(如Object、Array)的根本区别——前者值存于栈内存,后者通过指针引用堆内存中的实体。 接着,作者指出常用的typeof和instanceof在类型判断上存在诸多“不靠谱”的坑,并给出一个利用Object.prototype.toString.call实现的可靠判断函数。在类型转换部分,重点解释了“+”运算符的双重角色如何导致令人困惑的结果。 文章的核心难点在于引用类型的复制。作者详细演示了直接赋值导致多个变量指向同一对象、修改相互影响的现象,进而引出“浅拷贝”与“深拷贝”的概念。通过Array.slice和循环遍历实现浅拷贝后,进一步展示了嵌套对象中浅拷贝的局限性,并提供了一个支持深拷贝的递归copy函数实现方案,清晰展示了如何逐层复制以完全解耦原始对象与新对象。

IT 累计浏览 2,837

java参数传递分析

这篇技术文章探讨了一个Java开发者常感困惑的经典问题:参数传递到底是“传值”还是“传引用”?作者从基本类型和对象类型两个维度,通过代码示例逐步拆解了其底层机制。 文章的核心在于揭示一个反直觉现象:当你在方法内修改对象参数本身(如重新赋值)时,并不会影响到原对象。作者结合内存图示详细分析了原因——Java中所有参数传递本质上都是在栈中复制“值”。对于基本类型,复制的是数值本身;对于对象,复制的则是对象引用(即地址)。因此,在方法内对引用本身重新赋值,只是改变了副本的指向,而原引用所指的对象并未被修改。只有通过引用副本去操作原对象内部的内容时,变化才会体现。 通过对比`append`操作(修改原对象)与`new`操作(创建新对象并重新赋值)两种场景,文章清晰地阐明了Java“值传递”的实质:传递的永远是栈中内容的拷贝,无论是具体值还是对象引用地址。记住这一点,便能透彻理解对象参数在方法内外的行为差异。