今天琢磨了一下apply,之前對這個方法以爲比較懵,今天一琢磨確實以爲挺好玩的。數組
一開始把MDN的apply文檔看了一遍,感受不是很理解,並且有一些東西也是知道可是比較模糊,因此仍是一步一步來,不懂查查文檔,因而乎,來講一下理解順序~app
首先,要先理解一下兩個概念,constructor 和 prototype函數
constructor學習
解釋:this
這個屬性能夠找到對象的構造函數spa
prototypeprototype
解釋:code
能夠添加對象的屬性和方法對象
使用該屬性給構造函數添加屬性或方法時,繼承自該構造函數的新對象也會有該屬性或方法blog
新對象會擁有新增方法或屬性,可是打印出原構造函數是不變的,訪問構造函數的新增屬性或方法也是沒有的
接着,來學習一個建立對象的方法
1 var myObject = { 2 "a":{ 3
4 }, 5 "b":{ 6 value:11
7 } 8 } 9
最後,就是apply方法啦
fun.apply(this,[array])
解釋:
讓fun函數在this做用域下運行,array則做爲參數傳給fun函數
當this爲null或underfined時,默認指定全局對象
apply會把array轉化爲也參數列表
利用apply實現高效率
1 Math.min([1,2,3]);//不容許
2 Math.min(1,2,3);//容許
1 Math.min.apply(null,[array]);//求數組中的最小值,null是在全局環境下
1 var array1 = [1,2]; 2 var array2 = [3,4]; 3 array1.push(5,6);//[1,2,5,6]
4 array1.push([7,8]);//[1,2,5,6,[7,8]]
5
6 Array.prototype.push.apply(array1,array2);//[1,2,5,6,[7,8],3,4]
apply的知識點就總結完啦~不過仍是要多實踐,一開始的時候我仍是會搞錯,因此仍是要理論結合實際~
注:但願你們多給意見哈,謝謝~