jsのfor inサイクル

1102 ワード

プロトタイプに属性を追加した後、デフォルトで列挙し、最後に1234553を出力します.
function getNewArrayTwo(){
var array=[1,2,3,4,5 ];
Array.prototype.age=13;
var result=[];
for(var i in array){
result.push(array[i]);
}
alert(result.join(''));
}
配列に対してforを実行しないことを提案します. inサイクルは、実は、高性能javascriptという本の中で、forを強調しています. inサイクルはよくないです.いつもこのオブジェクトのプロトタイプにアクセスして、プロトタイプに属性があるかどうかを確認します.これは無意識のうちに遍歴に余分なストレスを与えます.
解決方法:
あるオブジェクトが与えられた名前の属性を持つなら、Object.prototype.hasOwnPropertyはtrueに戻る.オブジェクトがプロトタイプチェーンから属性を継承している場合、またはそのような属性がまったくない場合、falseに戻ります.ハスOwnPropertyでforを限定します. inサイクルは現在のプロトタイプの属性を考慮せずに巡回します.
function finalArray(){
var array=[1,2,3,4,5 ];
Array.prototype.age=13;
var result=[];
for(var i in array){
if(array.hasOwnProperty(i)){
result.push(array[i]);
}
}
alert(result.join(''));
}
 えっと、最近for of機能が発見されました.ふと以前はちょっとlowです.
for ofエルゴードは配列内の要素だけで、配列のプロトタイプ属性methodとインデックスnameを含まない.
オブジェクトを巡回して、オブジェクトのキー名をfor inで遍歴します.配列に対してfor ofを推奨します.
var myArray=[1,2,4,5,6,7]
myArray.name="  ";
for (var value of myArray) {
  console.log(value);
}