JavaScript关于闭包

在学习JavaScript这条路上,对于闭包这个JS中极其重要的应用技巧或者说是一个语言特性一直停留在最最表层的:

函数α内部的函数β被函数外部所调用,然后内部的函数β由于被调用使得其生存周期得以延长。而本身不能被外部调用的函数α的变量,则可以被调用。

然而往稍微深一点的层次里去探究,就会发现闭包对理解JS作用域链有着极大的作用。举例说明:

var guo = function(status){

return {

get_status:function(){

return status;

}

}

}

var myQuo_1 = guo("amazed_me");

var myQuo_ 2= guo("amazed_u");

测试这俩个对象是否共用一个status,你会发现,俩个对象所返回的status是不相同的,可以看出,JS对象作用域链上所绑定的对象并非是我们想当然的那个对象,而是在函数调用时所伴生的一个活动对象,这个对象里在函数的生命周期里保存了,函数传入的参数列表以及绑定的this值。

所以闭包内部函数所具有的作用域链上连接有外部函数以及其本身的活动对象,而非这些函数对象本身。可以试想,若作用域链上所保有的对象是函数对象本身,例子中的,俩个实例对象的私有status属性就应该是guo的属性,即是共有属性,值应该是相同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,695评论 2 6
  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 3,795评论 0 5
  • 原文链接:Understanding Scope in JavaScript原文作者:Hammad Ahmed (...
    MollyFool阅读 4,755评论 0 4
  • JS的闭包真的是一个老生常谈的知识点了,无奈它并不是那么好掌握,但是它又是那么重要,很多高级应用的开发都会用到闭包...
    一木_qintb阅读 2,548评论 0 1
  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 4,520评论 0 0

友情链接更多精彩内容