首页 > Web开发 > 详细

js 原型链

时间:2015-07-17 14:23:30      阅读:357      评论:0      收藏:0      [点我收藏+]

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

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],[]


js 原型链

原文:http://my.oschina.net/qii/blog/479700

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!