如何理解和熟练运用js中的call及apply

 我来答
百度网友4513f99a
2016-11-17 · 知道合伙人软件行家
百度网友4513f99a
知道合伙人软件行家
采纳数:128 获赞数:292
kkfor网站站长

向TA提问 私信TA
展开全部

js中的call和apply的确有一点复杂,下面请听我慢慢道来

先说apply用法,

obj.apply(obj,args):传递两个参数,obj代替传入类中的this对象,args代替传入类中的参数(数组形式)

obj.call(obj,arg1,arg2):和apply用法类似,只是后面的传值不同,可以直接写arguments,或者直接把类的所有参数写进去


看下面这个例子

1.先声明一个Person类,赋予初始值name,age

function Person(name,age) {
  this.name=name;
  this.age=age;

2.声明一个Student类,Student类中传递了name和age的参数,并没有初始化赋值。
function Student(name,age,sex,height){
  Person.apply(this,arguments);//Person.apply(this,[name,age]);
//也可以这样写Person.call(this,arguments);//Person.call(this,name,age);
  this.sex=sex;
  this.height=height;
}

3.实例化一个Student类为p1的对象

var p1 = new Student("xiaoming",22,"boy","180");
console.log(p1);//Student {name: "xiaoming", age: 22, sex: "boy", height: "180"}

看到结果p1对象也有有name,age的初始值。

所有apply将Person类中的初始化复制传递到了Student里面。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式