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 The Definitive Guide book,解释了如何创建子类,但它不起作用。
我曾经在这个网站上看到过关于如何创建子类的代码。
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!!
我想知道为什么我书中的代码不起作用。我的书有错误或我错了。
PS我的英文写得不好,对不起。
更新 这是我上面的第一个例子。
Sub_class.prototype = inherit(Super_class);
Sub_class.prototype.constructor = Sub_class; //Why did set be Sub_class??
我想知道为什么“Sub_class.prototype.constructor”设置为Sub_class?我的书没有解释。