Javascriptオブジェクトのリテラル表記とプロトタイプの関数を使って実験していますが、わからないバグがあります。Javascriptオブジェクトのリテラル表記での予期しない動作
ここに関連するコードです:
var MyTestObj = {
myTestFunction: function() {
var myArray = []
console.log('Before:');
console.log(myArray);
console.log(myArray.length);
console.log('---');
for (var mi = 0; mi < 5; mi++) {
myArray.push(1);
}
return myArray;
}
}
私はにconsole.log(MyArrayという)を呼び出すと、私は[]出力にそれを期待し、代わりに私はこれを取得:
> MyTestObj.myTestFunction()
Before:
[1, 1, 1, 1, 1]
0
---
[1, 1, 1, 1, 1]
誰かが理由を説明することができますが、 myArrayは、ループの前に出力したときに既に値を持っていますか?なぜすぐに正しい長さ(0)を出力しますか?
ヘルプを評価してください。
http://stackoverflow.com/a/8249333/798880 – Saxoier
が不気味遅い操作ですが、私はそれが実際に書き込みをするために周りの取得時点で...それはそこだけでパフォーマンスの問題だと思いますそれ、それは人口となっている。時折、私が破壊/クリアされるオブジェクトをログに記録し、そのプロパティにアクセスできない場合があります。 – JKing