この二重コンテキスト切り替えのケースに対処する最善の方法を探しています。
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 では、call を使用してコンテキストを変更し、myObject2 のデータにアクセスできるようにします。ただし、このため、myObject の各メソッドでは、これは myObject2 を参照するようになりました。call を使用しないと、myObject2 のデータにアクセスできません。
apply を使用し、元のオブジェクトを引数として渡して戻すことを考えましたが、myObject.each の元の定義を変更する必要のない、より洗練されたソリューションを探しています。
ありがとう!