gpt4 book ai didi

javascript - "this"指的是别的东西?

转载 作者:行者123 更新时间:2023-12-05 01:36:13 26 4
gpt4 key购买 nike

当我运行这段代码时:

var Test = function() {
return this.stuff;
};

Test.stuff = 'Neat!';

document.write(Test() || 'Not neat.');

为什么我得到“不整洁”?为什么我不能使用 this.stuff 访问 stuff 属性?

最佳答案

这就是你所做的:

var Test = function() {                //Test is a Function object
return this.stuff; //this is a pointer to an object, not Test
};

Test.stuff = 'Neat!'; //Add a property to Test

document.write(Test() || 'Not neat.'); //this has no property stuff

将代码的最后一行更改为:

document.write(Test.call(Test) || 'Not neat.'); //this now points to Test

您的代码不起作用的原因是因为 this 指针指向:

  1. 当函数调用以new 关键字为前缀时创建的构造函数的实例。 (例如 var foo = new Foo();//Foo 中的 this 指向 foo [为了便于解释])。
  2. 作为第一个参数传递给callapply 函数的对象。

你想做的是:

var Test = function Temp() {           //Test is a Function object, alias Temp
return Temp.stuff; //Temp is the same as Test, only locally
};

Test.stuff = 'Neat!'; //Add a property to Test

document.write(Test() || 'Not neat.'); //writes Neat!

如果喜欢,请为这个答案点个赞。干杯。

关于javascript - "this"指的是别的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102356/

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