亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javascript中for in的缺陷有哪些

發布時間:2021-08-11 11:52:25 來源:億速云 閱讀:139 作者:小新 欄目:web開發

這篇文章主要介紹Javascript中for in的缺陷有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Javascript for in的缺陷總結

for in 語句用來列舉對象的屬性(成員),如下

var obj = { name:"jack",
   getName:function(){return this.name}
};
//輸出name,getName  
for(var atr in obj) {
  alert(atr);
}

注意了嗎,沒有輸出obj的toString,valueOf等內置屬性(或稱內置成員,隱藏屬性和預定義屬性)。即for in用來列舉對象的顯示成員(自定義成員)。

如果重寫了內置屬性呢,下面就重寫obj的toString

var obj = {name:"jack",
   getName:function(){return this.name},
   toString:function(){return "I'm jack."}
}
for(var atr in obj) {
  alert(atr);
}

會輸出什么呢?

1、IE6/7/8 下和沒有重寫toString一樣,仍然只輸出name,getName

2、IE9/Firefox/Chrome/Opera/Safari下則輸出name,getName,toString 

如果給內置原型添加屬性/方法,那么for in時也是可遍歷的

Object.prototype.clone = function() {}
var obj = {
  name: 'jack',
  age: 33
}
// name, age, clone
for (var n in obj) {
  alert(n)
}

給Object.prototype添加了方法clone,for in時所有瀏覽器都顯示了clone。

這或許還沒什么,因為一般不建議去擴展內置構造器的原型,這也是Prototype.js走向沒落的原因之一。jQuery和Underscore沒有擴展自原型,前者在jQuery對象上做文章,后者索性將所有方法都掛在下劃線上。

但有時我們為了兼容ES5或后續版本,會在不支持ES5的瀏覽器上(IE6/7/8)去擴展內置構造器的原型,這時for in在各瀏覽器中就不同了。如下

if (!Function.prototype.bind) {
  Function.prototype.bind = function(scope) {
    var fn = this
    return function () {
      fn.apply(scope, arguments)
    }
  }
}
function greet(name) { 
  alert(this.greet + ', ' + name)
}
for (var n in greet) {
  alert(n)
}

IE6/7/8輸出了bind,其它瀏覽器則無。因為現代瀏覽器中bind是原生支持的,for in不到,IE6/7/8則是給Function.prototype添加了bind。

以上是“Javascript中for in的缺陷有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石林| 合作市| 浦东新区| 白水县| 温宿县| 渭源县| 兴文县| 江陵县| 大兴区| 民权县| 朝阳区| 阳信县| 聂荣县| 涞水县| 石门县| 时尚| 鄂尔多斯市| 轮台县| 东乌珠穆沁旗| 沙河市| 扎赉特旗| 上高县| 永嘉县| 宣恩县| 西峡县| 南召县| 罗山县| 崇阳县| 石首市| 五河县| 盱眙县| 察哈| 南宁市| 徐州市| 尼木县| 南安市| 车致| 湘乡市| 盈江县| 淳安县| 炉霍县|