好好爱自己!

javascript 中 apply(或call)方法的用途----对象的继承

一直以来,我的理解就是  js中的Function.apply(或者是Function.call)方法是来改变Function 这个函数的执行上下文(excute Context),说白了,就是改变执行时函数所处的作用域,

最直接的就是影响到 this 这个预定义的变量的值。!!Function.apply(obj, arguments),就是改变 function 的执行环境为 传入的obj 对象,即 Funtion 内部的this 会被改变为 obj. 

 

 

下面的这个例子是搜索别人的例子的。

 

先看个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)

 

再看个例子:

1
2
3
4
5
6
7
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))    // 这样却行的。一定要这样写

  

posted @   立志做一个好的程序员  阅读(424)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示