我有一些的jsfiddle代碼在這裏:http://jsfiddle.net/xyuY6/JavaScript的命名空間,並繼承
,代碼:
var App= {};
App.WebPage = {
WebPage : function(name) {
alert("In Super");
this.name = name;
},
Home : function(name) {
alert("In Sub");
App.WebPage.WebPage.call(this, name);
}
};
App.WebPage.WebPage.prototype.sayName = function() {
alert(this.name);
};
inherit(App.WebPage.WebPage, App.WebPage.Home);
var x = new App.WebPage.Home("zack");
x.sayName();
function inherit(subType, superType) {
alert("IN HERE");
var p = Object.create(superType);
p.constructor = subType;
subType.prototype = p;
}
我試圖做這個命名空間創建一個App
命名空間兩個構造, WebPage
和Home
。 WebPage
是「超級類型」,Home
是「子類型」。家應該繼承從WebPage的一切。
雖然你會看到當你運行JavaScript時,問題是在我做x.sayName
時,WebPage原型上定義的sayName函數沒有被調用。因此,它不被繼承。
爲什麼?
感謝您的幫助!
這正是我一直在尋找。謝謝! – user1513171
我更新了jsFiddle。嘗試覆蓋sayName方法。你能告訴我爲什麼這不起作用嗎? http://jsfiddle.net/45uLT/1/ – user1513171
沒關係,只需要改變一些調用的順序。 – user1513171