我有一個類,我已經定義了我在整個應用程序中使用的類。我有一個頁面,我希望改變這個類的所有實例的一些方法。這裏有一些代碼來說明。有條件地JavaScript重寫類方法
MyClass的-的script.js
var MyClass = new Class({
foo: function() {
return 1;
},
bar: function() {
return this.foo() + 9;
},
});
變化MyClass的-的script.js
MyClass.implement({
foo: function() {
return this.parent() * -1;
},
});
如果我有一個頁面MyClass的-的script.js我應該看到:
var test = new MyClass();
test.bar() === 10; //true
如果我包含myclass-script.js,然後更改-myclass-script.js,我應該看到:
var test = new MyClass();
test.bar() === 8; //true
我遇到的問題是MyClass.implement適用於MyClass的所有實例,但它不會「覆蓋」該方法,它將替換它。所以this.parent()調用失敗,因爲該方法沒有父對象。如果我做MyClass.extend它不適用像我想要的,我看不到MyClass的實例調用重寫的方法。
是什麼呢? – 2011-01-23 03:17:30
它將該函數應用於類本身,而不是其對象實例。 – 2011-01-23 06:22:25