js 原型链

在编程时,使用链式赋值语句是在正常不过的了。如

var a = b = c = '';

这样可以使得代码更加简洁。

但是,如果使用下面的代码呢?

var a = b = [];

先申明相关空数组,然后开始数据操作

a.push(1);
console.log(a,b);

输出的结果,很是让我诧异,因为a和b是完全一样的。

于是我又试了如下代码:

var a = b = [];
b.push(1);
console.log(a,b);

a和b还是一样的。

难道js不能这样赋值么?继续测试

var a = b = 0;
a=1;
console.log(a,b);
b=2;
console.log(a,b);

a和b是不一样的,第一次输出1,0,第二次输出1,2

我猜想是因为js原型链的原因,

代码的执行顺序如下:

var a,b;
b = new Array();
a = b;

因此,a和b有相同的原型链,因此调用push方法的时候,触发了原型链。

再继续测试:

var a = b = [];
a = [1];
console.log(a,b);

此时输出:[1],[]


转载于:https://my.oschina.net/qii/blog/479700

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值