0

该代码有什么问题?

var t={a:1};
var g={b:2};
g.prototype=new t();
alert(g.a); //do nothing
4

3 回答 3

4

该变量t包含一个对象,而不是一个函数,因此您不能像对象构造函数一样使用它。

您可以将对象用作原型,但您需要一个构造函数来使用原型:

var t = { a: 1 };
function g() {
  this.b = 2;
}
g.prototype = t;
alert(new g().a);

演示:http: //jsfiddle.net/Guffa/WeuPG/

于 2012-10-28T11:09:08.770 回答
2

您使用 new 和构造函数来创建对象,但是您现在拥有的 t 和 g 已经是对象了。

这应该有效;

function t(){
  this.a = 1;
}

function g(){
  this.b = 2;
}

g.prototype = new t();

alert(new g().a); // 1
于 2012-10-28T11:11:34.223 回答
1

构造函数必须是函数。

这是一篇非常好的关于继承的文章

于 2012-10-28T11:06:30.343 回答