首页 > 代码库 > apply & call
apply & call
一。意义
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的神奇之处.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。