ここのjsFiddleにいくつかのコードがあります:http://jsfiddle.net/xyuY6/
そしてコード:
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;
}
私がやろうとしているのは、この名前空間に 2 つのコンストラクターを持つ名前空間を作成することApp
です。「スーパータイプ」と「サブタイプ」です。Home は WebPage からすべてを継承する必要があります。WebPage
Home
WebPage
Home
ただし、JavaScript を実行するとわかるように、問題は WebPage プロトタイプで定義された sayName 関数が呼び出されないことですx.sayName
。したがって、継承されません。
なんで?
助けてくれてありがとう!!!