闭包及this指向

闭包是一种能访问另一个函数作用域内变量的函数,常用于封装私有变量和方法。它允许变量保留在内存中,但也可能导致内存消耗和内存溢出。在JavaScript中,this的指向取决于函数调用方式。当作为对象方法调用时,this指该对象;在匿名函数中,this默认指向全局对象window,但在严格模式下是undefined。文章通过示例展示了如何利用闭包保存this的引用以解决上下文丢失问题。
摘要由CSDN通过智能技术生成

闭包

闭包指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。

好处:可以读取函数内部的变量、将变量始终保持在内存中、可以封装对象的私有方法和私有属性

坏处:比较消耗内存、使用不当会造成内存溢出的问题

关于闭包中this的指向?

如果作为某个对象的方法调用,则this等于这个对象。

匿名函数不会绑定某个对象,这就意味着this会指向window,除非在严格模式下this是undefined。

例子:

Window.test=”The window”;

Let object = {

Test: ‘My Object’,

getTestFunc(){

return function() {

    return this.test;

}

}

}

Console.log(object.getTestFunc()());

// ‘The window’

每个函数在被调用时都会自动创建两个特殊变量:this和arguments。内部函数会永远不可能直接访问外部函数的这两个变量。但是,如果把this保存到闭包,可以访问的另一个变量中,则是行得通的。

例子:

Window.test=”The window”;

let object = {

test: ‘My Object’,

getTestFunc(){

let that = this;

return function() {

    return that.test;

};

}

};

Console.log(object.getTestFunc()());

// ‘My Object’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天的狗子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值