今天琢磨了一下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的知识点就总结完啦~不过仍是要多实践,一开始的时候我仍是会搞错,因此仍是要理论结合实际~
注:但愿你们多给意见哈,谢谢~