function inherit(p){
if(p == null) throw TypeError();
if(Object.create) return Object.create(p);
var t = typeof p;
if(t != "function" || t != "object") throw TypeError();
function f(){};
f.prototype = p;
return new f;
}
function Super_class(){
this.Sup_prop = "I'm superclass";
this.Sup_prop2 = "I'm superclass2";
}
Super_class.prototype.Hello = function(){ alert("Hello"); };
function Sub_class(){
this.sub_prop = "I'm subclass";
this.sub_prop2 = "I'm subclass 2";
}
Sub_class.prototype = inherit(Super_class);
Sub_class.prototype.constructor = Sub_class;
var x = new Sub_class;
x.Hello();
這段代碼來自Javascript權威指南手冊,它解釋瞭如何創建一個子類,但它不起作用。子類不起作用,爲什麼?
我見過有關如何在本網站創建子類的代碼。
function Super_class(){
this.Sup_prop = "I'm superclass";
this.Sup_prop2 = "I'm superclass2";
}
Super_class.prototype.Hello = function(){ alert("Hello"); };
function Sub_class(){
this.sub_prop = "I'm subclass";
this.sub_prop2 = "I'm subclass 2";
}
Sub_class.prototype = new Super_class;
var x = new Sub_class; // change here
x.Hello();// It work!!
我想知道爲什麼我的書中的代碼不工作。我的書有錯誤或我錯了。
P.S我的英語寫作不好,對不起。
UPDATE 這是我上面的第一個例子。
Sub_class.prototype = inherit(Super_class);
Sub_class.prototype.constructor = Sub_class; //Why did set be Sub_class??
我想知道爲什麼「Sub_class.prototype.constructor」設置爲Sub_class? 我的書沒有解釋它。
它以什麼方式不起作用?有什麼症狀? – 2013-04-08 02:29:03
警報不起作用。當我在Web瀏覽器中測試時,它有錯誤消息「has not method Hello」。 – Domino 2013-04-08 02:35:20