1.面試中遇到的一題,子類別繼承父類,父類有兩個方法,重寫其中一個方法。繼承我是肯定是用組合方式繼承,方法都是在原型上寫的,重寫的方法直接在子類別的原型物件上寫就ok了,因為物件的屬性查找是按照原型鏈上就近原則的,先找到的方法就呼叫這個方法。
2.程式碼如下:
[javascript] view plain copy // supcalss var parent = function(name,age){ this.name = name; this.age = age; } parent.prototype.showProper = function() { console.log(this.name+":"+this.age); } var child = function(name,age){ parent.call(this,name,age); } // inheritance child.prototype = Object.create(parent.prototype); // child.prototype = new parent(); child.prototype.constructor = child;
// rewrite function child.prototype.showProper = function(){ console.log('I am '+this.name+":"+this.age); } var obj = new child('wozien','22'); obj.showProper();
這樣子類別就是重寫了父類別的showProper方法了。其中Object.create(proto)函數是建立一個以proto對象為原型對象的對象,並且傳回這個對象。
尋找方法的順序:obj -> child.prototype ->parent.prototype
3.注意的地方:在JS實作方法繼承和重寫的時候,或是在創建類別方法的時候,都是在原型物件prototype上操作的,其他方式繼承方法就不用考慮了。
相關文章:
#以上是js繼承中的方法重寫重點講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!