JavaScript关于闭包

本文通过实例解析JavaScript闭包的概念及其实现原理,探讨闭包如何帮助理解JS作用域链,展示闭包内部函数的作用域链特点。

在学习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的属性,即是共同拥有属性,值应该是同样的。

转载于:https://www.cnblogs.com/lxjshuju/p/6795668.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值