下面是我的问题的一个非常简化的版本。在不更改对象“o”的定义且不使用名称“obj”的情况下,我如何在 foo.h 中引用 obj。
var obj = {
foo: function () {
alert(this.greet); // => undefined, obj.greet works but not feasible for my case
},
greet: "hi"
};
var o = {
m: obj.foo
};
o.m();
最佳答案
创建一个使用正确上下文调用旧函数的新函数。 The bind
method将在足够现代的浏览器中为您完成此操作。
var o = {
m: obj.foo.bind(obj)
};
如果你想支持旧版浏览器:
var o = {
m: (function (context) {
return function () {
context.foo();
};
}(obj))
};
关于Javascript 回调,引用自己的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162865/