javascript 中 apply(或call)方法的用途----对象的继承
2024-10-16 07:48:02
一直以来,我的理解就是 js中的Function.apply(或者是Function.call)方法是来改变Function 这个函数的执行上下文(excute Context),说白了,就是改变执行时函数所处的作用域,
最直接的就是影响到 this 这个预定义的变量的值。!!Function.apply(obj, arguments),就是改变 function 的执行环境为 传入的obj 对象,即 Funtion 内部的this 会被改变为 obj.
下面的这个例子是搜索别人的例子的。
先看个例子
function Person(name,age,grade){ //定义一个类,人类
this.name=name; //名字
this.age=age; //年龄
this.sayhello=function(){alert(grade)};
}
function Student(name,age,grade,school){ //学生类
Person.apply(this,arguments);
for(var i in arguments){alert(arguments[i])} this.grade=grade; //年级
this.school=school; //学校
}
stu = new Student('yuanshao',26,'university','Huaqiao')
stu.sayhello();//这样stu就有了 Person构造器中的sayhello()方法。
解释一下:
apply方法能劫持另外一个对象的方法,继承另外一个对象的属性
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
再看个例子:
alert(Math.max(5,8,9,11)) //8 可以
————————————
var arr=[5,7,9,1]
alert(Math.max(arr)) // 这样却是不行的。
——————————————————————
var arr=[5,7,9,1]
alert(Math.max.apply(null,arr)) // 这样却行的。一定要这样写
最新文章
- hdu4607 Park Visit(树的直径)
- Canu Quick Start(快速使用Canu)
- .Net 学习
- 浏览器内核控制Meta标签说明(内核渲染优先问题)
- eclipse 终极操作技巧
- JAVA动态代理详解
- 浅谈OSI七层模型及ICP/IP四层模型
- 关于装双系统Ubantu16.04+Win10引导问题
- 死磕 java集合之HashMap源码分析
- 【任务】Python语言程序设计.MOOC学习
- MySQL8.0安装
- 【NOI2008】志愿者招募
- php使用memcached缓存总结
- I - 迷宫问题
- html部分常用标签的含义及作用
- linux下时间有关的函数和结构体
- js省市级联实现
- 通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)
- linux系统更新rpm包问题 ,报错rhn-check-2.0.2-5.el7.noarch has missing requires of yum-rhn-plugin >;= ('0', '1.6.4', '1')
- 【C#】往按钮事件中传递自定义参数