我理解的call与apply的区别

大家在平常代码或者面试的时候是不是会经常遇到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的区别啦

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 大家好,我是IT修真院萌新分院第3期的学员张晓琳,一枚正直、纯洁、善良的前端程序员今天给大家分享一下,修真院官网j...
    Demon_0481阅读 579评论 0 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 忘了怎么相遇 开始就时过境迁 墨迹还没有干 你就说你很喜欢 看第一次见面 意料之外的简单 自习室的空气 弥...
    玫瑰花刺血阅读 250评论 0 3
  • - 1 - 乔舒犯怵了,她有点不知所措。“我们不结婚,只做情人”,看见手机屏幕上这几个字,乔舒不知道该回复什么。看...
    城南有北阅读 441评论 0 0