闭包和原型链

闭包:

简单的理解就是:闭包就是能够读取其他函数内部变量的函数,它两个最大的用处:

①可以读取函数内部的变量,

②让变量的值始终保持在内存中。闭包与它的词法环境绑在一起,因此闭包让我们能够从一个函数内部访问其外部函数的作用域 。

 

闭包特点:函数A嵌套函数B , 函数B能访问函数A的变量 , 最后返回函数B;   (函数B就是闭包)

 

闭包的优缺点:

优点:有利于封装,可以访问局部变量

缺点:一直留在内存中,浪费内存,有可能发生内存泄漏

 
 
 

原型链:

当调用一个对象的属性时 , 如果自身对象未找到 , 会去对象的__proto__属性(隐式原型对象)里去找 ,  (这里的隐式原型对象指向的就是它构造函数的prototype(显示原型对象))

然后原型本身也是一个对象 , 拥有__proto__ 属性 , 所以会继续向上查找 ,一直找到Object.prototype.proto===null   这样的链条称之为原型链

 

原型链的个人理解:
 
 

 

thing是Thing2的实例.
thing的__proto()__指向Thing2的prototype
Thing2的原型对象 = Thing1的实例对象,
new Thing1()的__proto__指向Thing1的prototype.

在Thing1的prototype里找到了foo属性

 

 

 

posted @ 2019-02-01 23:20  沧海的雨季  阅读(1313)  评论(0编辑  收藏  举报