麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

Javascript中的for in循環和hasOwnProperty結合使用

2019-11-20 22:39:53
字體:
來源:轉載
供稿:網友
與in操作符相比,for in 在循環對象的屬性時也會遍歷原型鏈,for in 不會讀取不可枚舉屬性,如數組的length屬性。 小結 當檢測某個對象是否擁有某個屬性時,hasOwnProperty 是唯一可以完成這一任務的方法,在 for in 循環時,建議增加 hasOwnProperty 進行判斷,可以有效避免擴展本地原型而引起的錯誤。

與in操作符相比,for in 在循環對象的屬性時也會遍歷原型鏈,for in 不會讀取不可枚舉屬性,如數組的length屬性。

復制代碼 代碼如下:

// 擴展 Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // 輸出 bar 和 moo
}


我們不可能改變 for in 循環的行為,當需要對循環體內某些屬性進行過濾時,可以利用Object.prototype的hasOwnProperty方法來完成。

提示:因為 for in 循環總是遍歷整個原型鏈,所以當遍歷多繼承的對象時效率較低。

使用 hasOwnProperty 進行過濾

復制代碼 代碼如下:

// 仍舊針對上例的foo對象
for (var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i);
}
}


例子中因為使用了hasOwnProperty,最終輸出moo;如果忽略 hasOwnProperty ,代碼將會輸出非預期結果,因為本地原型(如Object.prototype)已經被擴展了。

Prototype框架就是擴展Javascript原始對象的一個類庫,并被廣泛使用,其缺點也很明顯,當框架引入后,如果不使用 hasOwnProperty 進行過濾判斷,輸出結果保證不是你想要的。

最佳實踐

推薦在 for in 時,總是使用 hasOwnProperty 進行判斷,沒人可以保證運行的代碼環境是否被污染過。

hasOwnProperty
為了檢查某個對象是否擁有不在原型鏈上的自定義屬性,就有必要用到 hasOwnProperty 方法,任何一個對象都具有該方法,它繼承自 Object.prototype。

提示:我們無法完全檢測某個屬性是否是undefined,因為屬性有可能存在,但其值為undefined。hasOwnProperty 是Javascript中唯一一個可以處理對象屬性而不遍歷原型鏈的方法。

復制代碼 代碼如下:

// 擴展 Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};

foo.bar; // 1
'bar' in foo; // true

foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true


只有 hasOwnProperty 給出了正確的預期結果,當遍歷對象的屬性時這是很有必要的,沒有其它辦法來排除定義在對象原型鏈上的屬性。

hasOwnProperty 作為屬性

Javascript 并沒有保護 hasOwnProperty 為關鍵字或保留字,因此,如果某個對象擁有同名的屬性,就有必要利用擴展的 hasOwnProperty 來獲取正確結果。

復制代碼 代碼如下:

var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};
foo.hasOwnProperty('bar'); // 總是返回 false
// 使用另一個 hasOwnProperty 并將 this 設置為 foo 來調用它
{}.hasOwnProperty.call(foo, 'bar'); // true


小結
當檢測某個對象是否擁有某個屬性時,hasOwnProperty 是唯一可以完成這一任務的方法,在 for in 循環時,建議增加 hasOwnProperty 進行判斷,可以有效避免擴展本地原型而引起的錯誤。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 女人解衣喂奶电影 | 国产高潮好爽受不了了夜色 | 在线看小早川怜子av | 黄视频网站免费在线观看 | a级毛片免费观看在线播放 日本aaa一级片 | 亚洲一区二区在线视频 | 亚洲网站一区 | 在线成人av | 亚洲免费视频大全 | 久久精品国产久精国产 | 成人电影毛片 | 久草干 | 91情侣在线偷精品国产 | 黄色免费在线电影 | 精品人成 | 99亚洲伊人久久精品影院红桃 | 成人在线观看一区 | 精品国产一区二区三区天美传媒 | 精品亚洲视频在线 | 精品1 | 国产高潮失禁喷水爽到抽搐视频 | 日韩av在线影院 | 国产成人自拍视频在线观看 | 一区二区三区日韩电影 | 国产91丝袜在线熟 | 久久草草亚洲蜜桃臀 | 日韩视| 一级α片免费看 | 国产羞羞视频 | 性少妇freeseⅹbbwhd | 羞羞答答影院 | 国产污污视频 | 亚洲国产精品久久久久久久久久 | 国产外围在线 | 国产亚洲高清视频 | 片在线观看 | 精品国产一区二区三区蜜殿 | 久久影院免费观看 | 免费国产精品视频 | 国产九九 | 国产99视频在线观看 |