4

以下のコードは、a、a.length、およびb.testをログに記録します。aとb.testは両方とも[1、2、3]を生成します。編集-私は台無しにした。b.testはundefinedを生成します。以下のrainaの応答を参照してください。

a.lengthは3を生成します。

b.test.lengthが「未定義のプロパティ'length'を読み取れません」で失敗します

aとb.testが等しい場合、なぜこれが当てはまるのですか?


var a = [1,2,3];

var b = function(){};

b.prototype.test=[1,2,3];

console.log(a);

console.log(a.length);

console.log(b.test);

console.log(b.test.length);
4

1 に答える 1

5

プロパティbがないため、これは関数であり、そのプロトタイプオブジェクトは1つです。testFunction.prototype

ただし、この関数で作成されたオブジェクトは、プロトタイプチェーンにこのプロパティを持ちます(プロパティが定義されているオブジェクトへのポイントのprototype プロパティとして、これは...btest

console.log(new b().test.length);

...予想通り、3を与える必要があります。

于 2012-12-23T17:55:53.157 に答える