JavaScript中關於indexOf的使用方法與問題小結

來源:互聯網
上載者:User

這個方法相當有用,很多程式設計語言中都有相對應的實現,javascript中也不例外,然而當我在ie中運行如下代碼時候: 複製代碼 代碼如下:var arr = [1,2,3];
alert(arr.indexOf(1));

卻被提示“對象不支援此屬性和方法” 。而在chrome,ff下去運行良好。遂去求問google大神,發現原來js中Array的indexOf方法在js1.6版本中才給予了實現,ie7,8中只實現到了js1.3版本,chrome為js1.7版本,ff為js1.8版本。(ie依舊慢半拍)。無奈,只好針對ie進行擴充: 複製代碼 代碼如下:Array.prototype._indexOf = function(n){
if("indexOf" in this){
return this["indexOf"](n);
}
for(var i=0;i<this.length;i++){
if(n===this[i]){
return i;
}
}
return -1;
};

使用如下: 複製代碼 代碼如下:var arr = ["1","2","3"];
alert(arr._indexOf("2"));

這裡我們針對Array的原型進行了擴充,在擴充方法的命名上我加上了"_"字元,我認為這是一個好的習慣,當你在針對原型進行擴充的時候有必要對自己的擴充加以標記。
在_indexOf方法中,我們首先判斷當前Array是否實現了"indexOf" 方法,如果是的話直接調用系統發法,否則進行遍曆。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.