无法在 setTimeout() 函数调用的对象函数中使用 "this" 属性 获取对象变量

can't get object variable with "this" property in object function called by setTimeout() function

我还有一个问题。我目前正在处理对象,但我现在遇到了一个非常大的问题:D。如何在 setTimeout() 函数调用的对象函数中使用 "this" 属性 获取对象变量?

HTML:

variable value: <span class="log"></span>

JavaScript:

var logEl = document.getElementsByClassName("log")[0];

var Object = function()
{
    this.variable = "abc";
    setTimeout(this.callVar,1000);
}

Object.prototype.callVar = function()
{
    logEl.innerHTML = this.variable;
}

var obj = new Object();

我想得到variable value: abc,但我还是得到了undefined。如何解决? setTimeout() 必须在代码中。

此外,我不想用 obj. 替换 this.,只是另一个解决方案,如 parentObj.this....任何帮助都会很棒!

Fiddle

setTimeout 调用函数时,它会在 "global" 对象 (window) 的上下文中调用它。在 JavaScript 中,this 是根据 调用函数的方式设置的

JavaScript 已经 .bind() 解决了这个问题。试试这个:

var Object = function()
{
    this.variable = "abc";
    setTimeout(this.callVar.bind(this), 1000);
}

这将确保当 setTimeout 运行您的函数时,它会在右侧 "context" 被调用。

P.S。不要命名变量 Object。 JavaScript 有一个内置的 Object,替换它可能会产生意想不到的后果。