apply用法
1.對象的繼承
Function.apply(obj,args)方法能接收兩個參數(shù)
obj:這個對象將代替Function類里this對象
args:這個是數(shù)組胎撤,它將作為參數(shù)傳給Function(args-->arguments)
示例:
function Person(name,age)
{
this.name=name;
this.age=age;
}
/*定義一個學(xué)生類*/
function Student(name,age,grade)
{
Person.apply(this,arguments);
this.grade=grade;
}
//創(chuàng)建一個學(xué)生類
var student=new Student("zhangsan",21,"一年級");
//測試
alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);
//大家可以看到測試結(jié)果name:zhangsan age:21 grade:一年級
//學(xué)生類里面我沒有給name和age屬性賦值啊,為什么又存在這兩個屬性的值呢,這個就是apply的神奇之處.
2苹祟、利用Apply的參數(shù)數(shù)組化來提高
正常情況:
Math.max(5,8,9)方法只能傳多個參數(shù)
用apply提高之后:
var arr=[5,7,9,1]忿磅;
var result = Math.max.apply(null,arr);
result等于arr中的最大值
正常情況下,push方法不能push數(shù)組丁存,利用apply之后:
Array.prototype.push.apply(arr1,arr2)彩匕;
執(zhí)行完此方法之后,相當(dāng)于arr1 = arr1+arr2