该代码有什么问题?
var t={a:1};
var g={b:2};
g.prototype=new t();
alert(g.a); //do nothing
该变量t
包含一个对象,而不是一个函数,因此您不能像对象构造函数一样使用它。
您可以将对象用作原型,但您需要一个构造函数来使用原型:
var t = { a: 1 };
function g() {
this.b = 2;
}
g.prototype = t;
alert(new g().a);
演示:http: //jsfiddle.net/Guffa/WeuPG/
您使用 new 和构造函数来创建对象,但是您现在拥有的 t 和 g 已经是对象了。
这应该有效;
function t(){
this.a = 1;
}
function g(){
this.b = 2;
}
g.prototype = new t();
alert(new g().a); // 1
构造函数必须是函数。
这是一篇非常好的关于继承的文章