【发布时间】:2013-12-16 18:22:49
【问题描述】:
是的,这是另一个关于将 this 存储在变量 (that) 中的问题,但我对此感到困惑:
function Constructor(){
this.key = 'my key'
};
Constructor.prototype.start = function(){
var that = this;
return (function (){
console.log(that.key)
}());
};
foo = new Constructor;
foo.start()
bar = new Constructor;
newFoo = bar.start
newFoo()
我想既然this 被存储为一个变量,我可以在不丢失范围的情况下传递start() 方法吗?
我知道这已被经常讨论,但我找不到适合这种特定情况的答案。
如何在不使用Constructor.apply(this) 的情况下取回newFoo() 中的范围?
谢谢
【问题讨论】:
-
不会,你必须改变函数的工作方式,或者使用
newFoo.apply(bar)传递适当的范围 -
您能否举例说明您的预期输出是什么? T.J. 的答案是正确的,如果这是您要解决的问题。
-
请告诉我为什么你不赞成这个?这是一个合理的问题,那么有什么问题?
标签: javascript oop this