作用域链与原型链的区别与联系
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。
联系:从链表开头寻找,直到找到为止。
相关文章推荐
- hashcode()和equals()的作用、区别、联系
- js:作用域链,原型链
- [置顶] Delete、drop、truncat的作用、联系和区别
- MFC中的Invalidate、OnDraw、OnPaint函数的作用、区别和联系
- 白平衡的工作原理、作用与YUV、YCbCr的联系与区别
- 作用域链和原型链
- !!javascript 作用域链的原理和原型链
- MFC中的Invalidate、OnDraw、OnPaint函数的作用、区别和联系
- JSP和Servlet的区别和联系 JSP 内置对象和作用
- Pro*C,oci,occi的作用以及区别联系?
- 高性能JavaScript---作用域链, 闭包, 原型, 原型链
- hashcode()和equals()的作用、区别、联系
- try catch ,trow,throws的区别和联系
- Sizeof与Strlen的区别与联系
- Service、IntentService、Thread的区别和联系
- 关于ASP.NET和.NET的区别和联系
- Sizeof与Strlen的区别与联系
- 成本和费用的区别与联系
- ATL:IDispatchImpl, IDispEventImpl, IDispEventSimpleImpl的区别和联系
- javascript 之作用域链-07