该代码有什么问题?
var t={a:1};
var g={b:2};
g.prototype=new t();
alert(g.a); //do nothing
答案 0 :(得分:4)
变量t
包含一个对象,而不是一个函数,所以你不能像对象构造函数那样使用它。
您可以将该对象用作原型,但您需要一个构造函数来使用原型:
var t = { a: 1 };
function g() {
this.b = 2;
}
g.prototype = t;
alert(new g().a);
答案 1 :(得分:2)
你使用new和构造函数来创建对象,但你现在拥有的对象已经是对象了。
这应该有用;
function t(){
this.a = 1;
}
function g(){
this.b = 2;
}
g.prototype = new t();
alert(new g().a); // 1
答案 2 :(得分:1)
构造函数必须是一个函数。
这是关于inheritance
的非常好的文章