我正在寻找处理这种双重上下文切换的最佳方法。
function myObject() {
this.data = {};
}
myObject.prototype.each = function(func) {
if (func) {
for (var key in this.data) {
func(key);
}
}
}
function myObject2() {
this.data = {};
}
myObject2.prototype.someFunc = function(o) {
// o = myObject
o.each.call(this, function(key) {
this.data[key] *= o.data[key];
});
}
在 myObject2.someFunc 中,我使用调用来更改上下文,以便可以访问 myObject2 的数据。然而,正因为如此,在 myObject 的 each 方法中,this 现在指的是 myObject2。如果我不使用调用,那么我无法访问 myObject2 中的数据。
我考虑过使用 apply,然后将原始对象作为参数传递并将其传回,但我正在寻找一种更优雅的解决方案,它不需要我更改 myObject.each 的原始定义。
谢谢!