1,創造簡短的寫法
你可以這么寫:
1 var slice = Array.prototype.slice; 2 slice.call(arguments); //轉化成數組
也可以這么寫:(ie9+)
1 var unboundSlice = Array.prototype.slice; 2 var slice = Function.prototype.call.bind(unboundSlice); 3 slice(arguments);//轉化成數組
還可以這么寫:
1 (function(slice){ 2 slice(); //可以直接調用該方法 3 })(Array.prototype.slice);
2,原型方法擴展:
你可以這么寫:
1 function A(){}; 2 A.prototype.fn1=function(){}; 3 A.prototype.fn2=function(){};
也可以這么寫:
1 function A(){}; 2 A.prototype={ 3 constructor:A, 4 fn1:function(){}, 5 fn2:function(){} 6 };
還可以這么寫:
1 function A(){}; 2 $.extend(A.prototype,{ 3 fn1:function(){}, 4 fn2:function(0{} 5 });
3,返回一個由數組拼合成的字符串
你可以這么寫:
1 function A(){ 2 var a=[]; 3 4 a.push("str1"); 5 a.push("str2"); 6 a.push("str3"); 7 8 return a.join(""); 9 };
也可以這么寫:
1 function A(){ 2 return [ 3 "str1", 4 "str2", 5 "str3" 6 ].join(""); 7 };
4,逗號表達式
你可以這么寫:
1 var a; 2 var b; 3 var c;
也可以這么寫:
1 var a,b,c;
5,巧用&&
你可以這么寫:
1 if(a){ 2 b(); 3 };//如果a為真,則執行函數b
也可以這么寫:
1 a && b();
6,巧用||
你可以這么寫:
1 if(!a){ 2 c(); 3 };//如果a為假,則執行函數c
也可以這么寫:
1 !a || c();
7,巧用三元表達式
你可以這么寫:
1 if(a){ 2 b(); 3 }else{ 4 c(); 5 }//如果a為真,則執行函數b,否則執行函數c;
也可以這么寫:
1 a ? b():c();
8,同一個對象上綁定多個事件
你可以這么寫:
1 1 $(obj).click(function (){}); 2 2 $(obj).focus(function (){}); 3 3 $(obj).blur(function (){});
也可以這么寫:
1 $(obj).bind({ 2 click:function(){}, 3 foucus:function(){}, 4 blur:function:(){} 5 });
9,緩存對象屬性,防止每次都去讀取屬性
你可以這么寫:
1 for(var i =0 ;i < obj.length; i++){};
也可以這么寫:
for(var i=0, len=obj.length; i < len; i++){};
10,數組拼合
你可以這么寫:
1 var a=[1,2,3]; 2 var b=[4,5,6]; 3 var a=a.concat(b);//a=[1,2,3,4,5,6]
也可以這么寫:
1 var a=[1,2,3]; 2 var b=[4,5,6]; 3 a.push.apply(a,b);//a=[1,2,3,4,5,6]
這個地方不能不call哦,apply的參數必須是數組,此處正是利用了這一點!
11,沒有庫時,應該做簡易的封裝
你可以這么寫:
1 var dom1 = document.getElementById("id1"); 2 var dom2 = document.getElementById("id2");
也可以這么寫:
1 function D(id){ 2 return document.getElementById(id); 3 } 4 5 var dom1=D("id1"); 6 var dom2=D("id2");
12,善於使用正則:
你可以這么寫:
1 if(document.readyState==="loaded" || document.readyState==="complete"){}
也可以這么寫:
1 if (/loaded|complete/.test(document.readyState)){}
13,利用js內部的自我轉換
你要將number和string轉換,可以這么做:
1 //number轉化成string 2 var num=123; 3 var str=num.toString(); //"123" 4 5 //string轉化成number 6 var str="123"; 7 var num = parseInt(str,10); //123
也可以這么寫:
1 //number轉化成string 2 var num=123; 3 var str=num+""; //"123" 4 5 //string轉化成number 6 var str="123"; 7 var num = str-""; //123
14,使用原型進行批量復制:
你可以這么寫:
1 function f(x){ 2 x!=null && this.x=x; 3 }; 4 var a = []; 5 for(var i = 0; i<100; i++){ 6 a[i]=new f(10); //把實例分別存入數組 7 };
也可以這么寫:
function f(x){ x!=null && this.x=x; }; var a = []; function temp = {}; temp.prototype=new f(10); for(var i = 0; i<100; i++){ a[i]=new temp(); //把實例分別存入數組 };
假如你想修改數組的值,只需要修改類f的原型即可。
開心一刻: