代碼奇遇

今天在寫代碼的時候遇到一種代碼,在處理function的參數arguments的時候,錯誤的把當作一個Array處理了,嘗試着去調用Array對應的原型對象的slice屬性,結果報undifined錯誤,可見arguments並不是Array的孩子。懷着這個疑問,查看了arguments的constructor,發現arguments的constructor居然是Object.數組


那麼若是咱們須要對arguments進行slice,解決方式有不少,原理都是講arguments轉化成數組就解決了,可是問題是,這樣的描述,用什麼樣的代碼寫最爲優美。選擇call()方法是比較合適的,call(obj,[方法參數])方法使用來描述用別的對象來替代當前對象且調用對應的方法,例如,code

emptyArray = [], slice = emptyArray.slice
            alert(arguments.constructor)
            alert(slice.call(arguments,1));//slice是emptyArray對象的,這裏至關於把emptyArray替換成arguments來調用slice。

遍歷出數組中的全部元素,並對元素進行處理

var args = [1,2,3];
args.forEach(function(arg){alert(arg)})

|| 和 &&

alert(1||2)//1
alert(""||2)//2
/*
左邊||右邊 ,表示不是選左邊就是選右邊,左邊沒有(false),那麼留下來的就是右邊,若是左邊有了(true)留下來的就是左邊。[選了右邊,就把||以前的一塊兒擦掉,選了左邊就把右邊擦掉]
*/
alert(1&&2);//2
alert(""&&2);//""
/*
 與||正好相反
*/
相關文章
相關標籤/搜索