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 に答える