这里有一个简单的代码片段。
我想确保obj
内部的this
是obj
,以便我可以从b
中调用a
。我在另一个函数中使用了obj
,当我在b
中设置断点时,发现this
是窗口,而不是obj
。
var obj = {
a: function() { return 2 },
b: function() { return 5+ this.a() },
}
$('#hey').text(obj.b());
obj
在许多其他类中使用的文件中定义,因此在使用obj
的地方定义任何一个方法都没有意义。
从@Kamil的答案来看,看起来我需要将a
作为参数传递给b
。 如下所示:
var user = obj.b(obj.a);
var obj = {
a: function() { return 2 },
b: function(func) { return 5 + func() },
}
编辑 下面的方法可以实现,但是比较混乱。有更加优雅的方法吗?
最终我改变了
startingSMA = this.simple_moving_average(startingSMA, period, accessor)
翻译如下:
startingSMA = (function(startingSMA, period, accessor) {
return this.simple_moving_average(startingSMA, period, accessor)
}).apply(Statistics, [startingSMA, period, accessor]);
this
指的是全局对象,而在 Web 浏览器中确实是window
。 - Paulobj
,如何复制引用window
? - Steely Wing