您的位置:首页 > 其它

作用域链与原型链的区别与联系

2017-08-01 12:52 239 查看

作用域

先来看一段代码:

name=”lwy”;

function t(){

var name=”tlwy”;

function s(){

var name=”slwy”;

console.log(name);

}

function ss(){

console.log(name);

}

s();

ss();

}

t();

当执行s时,将创建函数s的执行环境(调用对象),并将该对象置于链表开>头,然后将函数t的调用对象链接在之后,最后是全局对象。然后从链表开头寻找变量name,很明显

name是”slwy”。

但执行ss()时,作用域链是: ss()->t()->window,所以name是”tlwy”

原型链

当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止,到查找到达原型链的顶部(也就是 Object.prototype),如果仍然没有找到指定的属性,就会返回 undefined。

区别:1. 作用域是对于变量而言,原型链是对于对象的属性。

2. 作用域链顶层是window,原型链顶层是Object。

联系:从链表开头寻找,直到找到为止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: