美文网首页
对js中call和apply的理解(一)

对js中call和apply的理解(一)

作者: 打不过就加入他 | 来源:发表于2016-07-22 01:39 被阅读265次
function People(){
}
People.prototype = {
      age: 26,
      say: function(){
        alert(this.age)
      }
}

new People().say() // 26
//如果此时有个child对象,也想使用say方法,但是我不想再b对象下在定义一个同样功能的say方法,此时call,apply就派上用场了
var child = {age: 38};
new People().say.call(child) //38

从这里可以看出,其实call或者apply都是为了动态改变this指针而出现的child本身没有say()方法,却希望使用say方法,所有使用call,将people类的指针动态指向child,从而alert自己的age参数

function a(){
  console.log(Array.prototype.slice.call(arguments));
}
a(1,2,3,4,5)   //[1, 2, 3, 4, 5]

像arguments这种类数组对象,可以调用Array的slice方法来将arguments进行分割处理(arguments是类数组对象,可以理解为[1,2,3,4,5].slice())


apply、call的不同之处

function foo(arg1,arg2){
    console.log(arg1,arg2)
}
var c = {}
foo.call(c,1,2,3)   //1,2    
foo.apply(c,[1,2,3]) //1,2

不同之处就在于call和apply的参数传入方式不同。

相关文章

  • js中方法继承

    call 和 apply JS中的call()和apply()方法

  • 如何理解js中的call和apply?

    如何理解 js 中的 call 和 apply? 背景介绍 call 和 apply 都是为了改变某个函数运行时的...

  • 手写call和apply

    1. 什么是call和apply 传送门:理解与使用js中的apply()和call()至于为什么要手写代码,不仅...

  • 对js中call和apply的理解(一)

    从这里可以看出,其实call或者apply都是为了动态改变this指针而出现的child本身没有say()方法,却...

  • JS中apply与call

    js中apply和call算是一个比较绕的方法,今天我就谈谈我对它们的理解,错误之处欢迎指正。 1,语法 call...

  • call apply

    js基础知识---call,apply,bind的用法 call,apply详解 javascript中,call...

  • 2018-12-21 Call 和 Apply

    JS中每个Function对象都有一个apply()方法和一个call()方法 apply 、call 则是立即调...

  • 理解JS中的call和apply

    存在即合理,首先了解下call和apply存在的作用。 JS中函数存在 定义时上下文 和 运行时上下文,并且上文是...

  • javascript 中 的apply,call 和 bind的

    apply和call 在js中,apply和call都是用来改变函数 执行时上下文 的,也就是改变 this 的指...

  • [读] JS中的call()和apply()方法

    JS中的call()和apply()方法 实现继承 多重继承

网友评论

      本文标题:对js中call和apply的理解(一)

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