引用类型赋值问题

本文深入探讨JavaScript中的引用类型赋值问题,包括基本数据类型和对象的区别。在基本数据类型中,赋值操作不会影响原变量。而对于对象,由于它们在堆内存中存储,赋值实际上是复制引用,因此修改一个对象会影响所有引用该对象的变量。在实例中,通过Person和SubPerson构造函数展示了原型链中的引用问题,说明了如何通过原型继承影响子对象的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用类型赋值问题

这篇文章总结解释的很好,可供参考----------- 引用类型赋值问题

基本数据类型

这个很好理解,因为基本数据类型,只是复制变量的值,那么更改原来变量的值,并不会影响到后面的b的值.本意就是原来a得值.

var a = 1;
var b = a;
a = 3;
console.log("a = " + a);  // a = 3
console.log("b = " + b);  // b = 1

对象

这里是引用数据类型,因为对象是存在堆里面的,所以保存的是一个指向, 因为objAobjB都指向同一个地址,那么不论谁更改,地址变动了,那么另一个对像内容也会跟着更改.

var objA = {
    "name": "abc",
    "age": 100
};
var objB = objA;
objA.age = 200;

console.log("objA.age = " + objA.age); //objA.age = 200
console.log("objB.age = " + objB.age); // objB.age = 200

这个是我再别的地方找来的,但是刚开始最后一个打印female.color不理解的,研究了下,值得多看…主要是继承方面的,需要多琢磨.(自己品品吧)

function Person() {
    this.color = ["yellow", "white"];
}

function SubPerson() {

}
SubPerson.prototype = new Person();
var male = new SubPerson();
console.log("male.color = " + male.color); //male.color = yellow,white
male.color.push("black");

var female = new SubPerson(); 
console.log("female.color = " + female.color); //female.color = yellow,white,black
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值