June 4,2008
Javascript Overriding Method : Javascript如何擴充繼承類別的函式?
問題描述:在Javascript中,A'類別'繼承B'類別'(透過prototype的方式),A類別就擁有B的函式可以使用,A要透過怎樣的方式修改(override)B的函式,能保有B函式的功能,且新增A的功能進去?
(詳細描述如下↓)
舉例:
var B = function() {}
B.prototype = {
printMessage : function() { alert('B hello world'); }
}
var A = function() { this.printMessage(); }
A.prototype = new B();
很顯然的上面的例子會跳出的訊息為"B hello world",這時候我override printMessage(),會取代掉原本B類別中函式printMessage()的功能,如下↓
var B = function() {}
B.prototype = {
printMessage : function() { alert('B hello world'); }
}
var A = function() { this.printMessage(); }
A.prototype = new B();
A.prototype.printMessage = function() { alert('A hello world'); }
上面的例子會印出"A hello world",顯然也不是我要的,同時要擁有A類別中新定義的函式功能與B繼承類別的函式功能,寫法如下:
var B = function() {}
B.prototype = {
printMessage : function() { alert('B hello world'); }
}
var A = function() { this.printMessage(); }
A.prototype = new B();
A.prototype.printMessage = function() {
alert('A hello world');
B.prototype.printMessage.apply(this);
}
大功告成 :P
technorati tags: javascript, js, override, method, prototype, 物件, 繼承, 複寫函式, evilsmile
引用URL
got it :P
