Javascript中的继承:为什么这段代码什么都不做?

时间:2012-10-28 11:01:51

标签: javascript oop

该代码有什么问题?

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

3 个答案:

答案 0 :(得分:4)

变量t包含一个对象,而不是一个函数,所以你不能像对象构造函数那样使用它。

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

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

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

答案 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

的非常好的文章