码迷,mamicode.com
首页 > Web开发 > 详细

js 原型链

时间:2015-07-17 14:23:45      阅读:125      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!