gpt4 book ai didi

javascript - 为什么要创建一个值为 this 的变量

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:06 25 4
gpt4 key购买 nike

我在 JavaScript 中看到过很多这种情况,我确实记得找出原因,但我不记得答案了。

我猜这与范围和在“类”外部调用的函数有关,但为什么要这样做(最好概述一个示例):

function myClass ()
{
var self = this;

//...

this.myArray = [];

this.myFunc = function () { alert(self.myArray.length); };
}

最佳答案

为了锁定变量作为 closure 的一部分.

例如:

MyClass.prototype.doStuff = function(){
this.foundItems = [];
var self = this;
this.myString.replace(/.../,function(){
// `this` is actually the `window` inside this callback
// so we need to use `self` to invoke another method on our instance object
self.foundItems.push( self.doOtherStuff() );
});
};

如果您以预期的方式调用该方法,您编写的具体示例不需要闭包:

function Foo(){
this.array = [];
this.myFunc = function(){
return this.array;
}
}
var foo = new Foo;
foo.myFunc(); // []

但是,可以像这样“破坏”它:

var f2 = foo.myFunc;
f2(); // undefined, since `this` was the window

另一方面,您使用闭包的代码可以安全地防止这种愚蠢行为。

关于javascript - 为什么要创建一个值为 this 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com