0
我正在尋找處理這種雙上下文切換情況的最佳方法。javascript中的雙上下文切換
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的每個方法中,現在都指向myObject2。如果我不使用呼叫,那麼我無法訪問myObject2中的數據。
我想過使用申請,然後通過原始的對象作爲參數,並將其傳遞回來,但我期待的,不需要我改變myObject.each原來defition一個更優雅的解決方案。
謝謝!
此代碼並沒有真正的工作,對不對? 「each」函數應該用'func.call(this,key);''someFunc'回調中的''this'不起作用。 – Pointy