gpt4 book ai didi

闭包中的 javascript 原型(prototype)和 "this"访问

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

我是js新手,对下面的代码很疑惑:

Foo = function(arg) {
this.arg = arg;
};

Foo.prototype = {
init: function () {
var f = function () {
alert("current arg: " + this.arg); // am expecting "bar", got undefined
}
f();
}
};

var yo = Foo("bar");
yo.init();

我应该得到“current arg: bar”,但得到的是“current arg: undefined”。我注意到首先将 this.arg 复制到一个“普通”变量中,然后在闭包中引用这个变量:

Foo.prototype = {
init: function () {
var yo = this.arg;
var f = function () {
alert("current arg: " + yo); }
f();
}
};

我是不是做错了什么,有错误的期望,还是属于 js WTF 之一?

最佳答案

Vanilla 函数将使用 this 引用 window 运行。您的第二段代码是如何使用闭包解决此问题的完美示例。

(您还可以使用 callapply 来调用具有特定上下文的函数。)

关于闭包中的 javascript 原型(prototype)和 "this"访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161943/

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