一。意义
function.apply(obj,args)
obj代替function里this对象
args作为参数传给function
二。实例
1. obj代替function里this对象
1 function f(){ 2 alert(this.x + this.y); 3 } 4 var obj = {x:1,y:2}; 5 f.call(obj); //3
2. API应用
Math.max(param1,param2,param3…) :实现得到数组中最大的一项
问题:max不支持数组参数
解决:根据apply的特点来解决
var max=Math.max.apply(null,array)
这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,
所以直接传递了一个null过去。undefine是未定义的对象 ,null是定义的对象, 但是没有实例,可以理解为null是defined了的obj。
3. 继承
1 /*定义一个人类*/ 2 function Person(name,age) 3 { 4 this.name=name; 5 this.age=age; 6 } 7 /*定义一个学生类*/ 8 functionStudent(name,age,grade) 9 { 10 Person.apply(this,arguments); 11 this.grade=grade; 12 } 13 //创建一个学生类 14 var student=new Student("qian",21,"一年级"); 15 //测试 16 alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade); 17 //大家可以看到测试结果name:qian age:21 grade:一年级 18 //学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.
apply & call
时间: 2024-11-01 00:06:11