JavaScript開發(fā)小建議
154 2017-06-28
開發(fā)小建議
這篇文章將向你分享一些不為人知的但很有用的小建議,對那些剛涉及使用編程語言的初級開發(fā)者應該有很大的幫助。
1.用數組長度截取數組
我們都知道,對象都是通過使用引用的,但這并不是唯一的準則,請看下面的檢驗案例:
1
2
3
4vararr1=arr2=[1,2,3];
//Changearr1
arr1=[];//arr2willstillbe[1,2,3]
最初,arr1和arr2都指向了數組[1,2,3],之后當arr1重新指向[]的時候,arr2的引用并沒有發(fā)生什么變化,仍然指向[1,2,3]。但是如果我們想讓arr1和arr2都指向[]的話,那應該怎么做呢?我們可以利用數組的長度屬性。當設置arr1.length=0的時候,arr1里面的要素將被清空。而引用是不會改變的,所以arr1和arr2指向[]。
2.用push來合并數組
我們通常使用concat()來合并兩個數組,例如:
1
2
3
4
5vararr1=[1,2,3];
vararr2=[4,5,6];
vararr3=arr1.concat(arr2);
arr3;
[1,2,3,4,5,6]
我們同樣可以利用push()來達到這種效果:
1
2
3
4
5vararr1=[1,2,3];
vararr2=[4,5,6];
Array.prototype.push.apply(arr1,arr2);
arr1
[1,2,3,4,5,6]
應用這種方法可以把一個數組作為第二個參數,因此,arr2能夠被推送到arr1里面。
3.特征檢測
在我們使用的很多API里,我們能看到一些特征檢測語句,這些語句是用來檢查瀏覽器是否支持特定的屬性或方法,以便能夠支持跨瀏覽器兼容性??梢赃@樣做:
1
2
3
4
5if(window.opera){
console.log("OPERA");
}else{
console.log("NOTOPERA");
}
這樣的運作方式是正確的,但它的缺點是效率不高。這種類型的對象檢測將在瀏覽器里初始化資源。更有效地方式是檢查密鑰是否在某一個對象里。
1
2
3
4
5if("opera"inwindow){
console.log("OPERA");
}else{
console.log("NOTOPERA");
}
4.檢查某一個對象是不是數組
在編程語言里,我們可以使用typeof來檢查變量的類型,typeof可以返回數字、布爾值、字符串、對象、函數和未定義的對象。事實上這里沒有數組,typeof數組就是一個對象。所以我們怎么來決定一個對象就是一個數組呢?在ECMAScript5編程語言里,我們可以使用Array.isArray(obj)來檢查這里所提到的問題。但是目前ECMAScript5還沒有得到廣泛使用。
不過,我們可以使用下面的方法:
1
2
3varobj=[];
Object.prototype.toString.call(obj)=="[objectArray]";
true
掃一掃
獲取更多福利
獵學網企業(yè)微信
獵學網訂閱號
獵學網服務號