上面代碼通過實例化子類和父類,分別調用toString()實現了繼承的關係。 這個時候有這樣的需求;不實例化父類,直接通過子類完完整整的調用父類的方法或屬性。 實現代碼如下 通過面簡單的三行紅色代碼就實現了子類訪問父類成員的需求。 本來想模仿java的使用super訪問父類,後來想想super是ja ...
function Animal(){} Animal.prototype={ name:"animal", toString:function(){ console.log(this.name); } }; Animal.prototype.constructor=Animal; function Dog(){} //用於打破對象的引用傳遞,防止修改子類屬性對父類產生影響 var F=function(){} F.prototype=Animal.prototype Dog.prototype=new F(); Dog.prototype.constructor=Dog; Dog.prototype.name="dog"; var d=new Dog(); d.toString(); //列印子類name dog var a=new Animal(); a.toString();//列印父類name animal
上面代碼通過實例化子類和父類,分別調用toString()實現了繼承的關係。
這個時候有這樣的需求;不實例化父類,直接通過子類完完整整的調用父類的方法或屬性。
實現代碼如下
function Animal(){} Animal.prototype={ name:"animal", toString:function(){ console.log(this.name); } }; Animal.prototype.constructor=Animal; function Dog(){} //用於打破對象的引用傳遞,防止修改子類屬性對父類產生影響 var F=function(){} F.prototype=Animal.prototype Dog.prototype=new F(); Dog.prototype.constructor=Dog; Dog.prototype.name="dog"; Dog.uber=Animal.prototype; var d=new Dog(); d.toString(); //列印子類name dog //var a=new Animal(); //a.toString();//列印父類name animal /** * Dog.prototype.constructor===d.constructor */ Dog.prototype.constructor.uber.toString();//列印animal(方式1) d.constructor.uber.toString(); //列印animal(方式2)
通過面簡單的三行紅色代碼就實現了子類訪問父類成員的需求。
本來想模仿java的使用super訪問父類,後來想想super是javascript的關鍵字。