apply用法
1.对象的继承
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
示例:
function Person(name,age)
{
this.name=name;
this.age=age;
}
/*定义一个学生类*/
function Student(name,age,grade)
{
Person.apply(this,arguments);
this.grade=grade;
}
//创建一个学生类
var student=new Student("zhangsan",21,"一年级");
//测试
alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);
//大家可以看到测试结果name:zhangsan age:21 grade:一年级
//学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.
2、利用Apply的参数数组化来提高
正常情况:
Math.max(5,8,9)方法只能传多个参数
用apply提高之后:
var arr=[5,7,9,1];
var result = Math.max.apply(null,arr);
result等于arr中的最大值
正常情况下,push方法不能push数组,利用apply之后:
Array.prototype.push.apply(arr1,arr2);
执行完此方法之后,相当于arr1 = arr1+arr2