JavaScript對象遍歷 與 function item() {[native code]}

首先引出問題

問題代碼部分

var temp = '';
var taskscreen = {}
.....
for(var item in taskscreen){
    if(taskscreen[item]!=''&&taskscreen[item]!='-萬'&&taskscreen[item]!='至'&&taskscreen[item]!='-人'&&taskscreen.hasOwnProperty(item)){
        if(temp==''){
            temp=item+':'+taskscreen[item];
        }
        else {
            temp=temp+';'+item+':'+taskscreen[item];
        }
    }
}

最後生成的temp 爲   function item() {[native code]}:undefined

[native code]表示瀏覽器底層實現的c++機器語言代碼

for in 在遍歷對象包含繼承和自身屬性,繼承屬性就有函數引用,

對象在轉化爲字符串事就是   function item() {[native code]}:undefined

在瀏覽器中進行如下打印,就會發現問題所在

問題代碼中 item+':'進行隱式轉換,

 item+':' === item.toString()+':'   //true

Object.keys(obj)返回obj自身屬性的一個數組

本問題總結

  1. 時刻注意操作符在背後做的事情
  2. 推薦使用Object.keys(obj).forEach()遍歷對象
  3. 對象遍歷缺乏類型判斷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章