美文网首页
我理解的call与apply的区别

我理解的call与apply的区别

作者: 有一个程序媛 | 来源:发表于2018-05-15 10:54 被阅读0次

大家在平常代码或者面试的时候是不是会经常遇到call和apply

1.我们先来看一个apply的示例:

//定义女生类

function Girl(hair,sex){

    this.hair = hair;

    this.sex = sex;

}

//定义女士类

function Women(hair,sex,age){

    Girl.apply(this,arguments);

    this.age = age;

}

//创建一个女士类

var women=new Women("lang",女,"23岁");

//测试

alert("hair:"+women.hair+"\n"+"sex:"+women.sex+"\n"+"age:"+women.age);

//测试结果hair:lang sex:"女" age:"23岁"

//女士类里面我们并没有给hair和sex属性赋值,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.

分析: Girl.apply(this,arguments);

this:在创建对象在这个时候代表的是women

arguments:是一个数组,也就是["lang",女,"23岁"];

也就是通俗一点讲就是:用women去执行Girl这个类里面的内容,在Girl这个类里面存在this.hair等之类的语句,这样就将属性创建到了women对象里面

2.什么情况下用call呢?

如果Women的参数列表时(hair,sex,age)跟Girl的参数列表(hair,sex)相同属性的先后位置是一样的,我们用apply

如果Women的参数列表时(sex,hair,age)跟Girl的参数列表(hair,sex)相同属性的先后位置不一样,我们用call,也就是直接指定参数列表对应值的位置(Girl.call(this,hair,sex,age));

。。。。。。这就是call和apply的区别啦

相关文章

  • 我理解的call与apply的区别

    大家在平常代码或者面试的时候是不是会经常遇到call和apply 1.我们先来看一个apply的示例: //定义女...

  • JavaScript 中 apply 、call 的详解

    apply 和 call 的区别 ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法...

  • call与apply

    首先明确一点,call与apply的作用是一样的,只是传参的形式有区别而已。 1、call与apply的区别 ap...

  • 17_call和apply的区别是什么?caller和calle

    一、call和apply的区别 ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,...

  • this_原型链_继承

    问题1: apply、call 、bind有什么作用,什么区别? apply和call call apply,调用...

  • 前端基础(问答24)

    keywords: this、闭包、apply、call。 apply、call 有什么作用,什么区别 apply...

  • this

    this 的值到底是什么?一次说清楚 1、apply、call 、bind的作用与区别? call、apply 调...

  • this 继承

    1.apply call bind的作用与区别 apply call bind都是用来改变函数执行的上下文,也就是...

  • JavaScript 中 apply、call的详解

    apply和call的区别 ECMAScript 规范给所有函数都定义了call与 apply 两个方法,他们的应...

  • bind()和call()和apply()的区别

    bind()和call()和apply()的区别 首先说说call()和apply()的区别 它们都是改变this...

网友评论

      本文标题:我理解的call与apply的区别

      本文链接:https://www.haomeiwen.com/subject/aqdedftx.html