對新手有用的JavaScript開發小建議

csdn發表於2013-08-23

  這篇文章將向你分享一些不為人知的但很有用的JavaScript小建議,對那些剛涉及使用JavaScript程式語言的初級開發者應該有很大的幫助。

  1. 用陣列長度擷取陣列

  我們都知道,物件都是通過使用JavaScript引用的,但這並不是唯一的準則,請看下面的檢驗案例:

var arr1 = arr2 = [1, 2, 3];
 
//Change arr1
arr1 = [];// arr2 will still be [1,2,3]

  最初,arr1和arr2都指向了陣列[1,2,3],之後當arr1重新指向[ ]的時候,arr2的引用並沒有發生什麼變化,仍然指向[1,2,3]。但是如果我們想讓arr1和arr2都指向[ ]的話,那應該怎麼做呢?我們可以利用陣列的長度屬性。當設定arr1.length=0的時候,arr1裡面的要素將被清空。而引用是不會改變的,所以arr1和arr2指向[ ]。

  2. 用push來合併陣列

  我們通常使用concat()來合併兩個陣列,例如:

var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=arr1.concat(arr2);
arr3;
[1, 2, 3, 4, 5, 6]

  我們同樣可以利用push()來達到這種效果:

var arr1=[1,2,3];
var arr2=[4,5,6];
Array.prototype.push.apply(arr1,arr2);
arr1
[1, 2, 3, 4, 5, 6]

  應用這種方法可以把一個陣列作為第二個引數,因此,arr2能夠被推送到arr1裡面。

  3. 特徵檢測

  在我們使用的很多API裡,我們能看到一些特徵檢測語句,這些語句是用來檢查瀏覽器是否支援特定的屬性或方法,以便能夠支援跨瀏覽器相容性。可以這樣做:

if(window.opera){
    console.log("OPERA");
}else{
    console.log("NOT OPERA");
}

這樣的運作方式是正確的,但它的缺點是效率不高。這種型別的物件檢測將在瀏覽器裡初始化資源。更有效地方式是檢查金鑰是否在某一個物件裡。

if("opera" in window){
    console.log("OPERA");
}else{
    console.log("NOT OPERA");
}

  4. 檢查某一個物件是不是陣列

  在JavaScript程式語言裡,我們可以使用typeof來檢查變數的型別,typeof可以返回數字、布林值、字串、物件、函式和未定義的物件。事實上這裡沒有陣列,typeof陣列就是一個物件。所以我們怎麼來決定一個物件就是一個陣列呢?在ECMAScript 5程式語言裡,我們可以使用 Array.isArray(obj)來檢查這裡所提到的問題。但是目前ECMAScript 5還沒有得到廣泛使用。

  不過,我們可以使用下面的方法:

var obj=[];
Object.prototype.toString.call(obj)=="[object Array]";
true

  英文原文:Pixels Tech

相關文章