资讯专栏INFORMATION COLUMN

如何理解javascript的call和apply

NoraXie / 1892人阅读

摘要:网上对于和的解释已经非常多了,但是感觉看完之后,还不是特别理解其作用。对于最直接的理解就是继承。说太多反而不好理解。

网上对于call和apply的解释已经非常多了,但是感觉看完之后,还不是特别理解其作用。

对于call、apply最直接的理解就是继承。
我们在面向对象编程的时候,经常会这样写:

function People(name){
    this.name = name
}
 
People.prototype={
    food:"fish",
    say: function(){
        console.log("My Name is "+ this.name +",I love "+this.food);
    }
}
var people = new People("www.ghugo.com");
people.say();

以上代码应该很好理解,这时如果我们有一个对象:

hugo2 = {food : "bone"}

我们不想对它重新定义say方法,那么我们可以通过call或apply用People的say方法:

people.say.call(hugo2,"hugo");

也就相当于是这样调用:

hugo2.say() //伪代码,仅作为代码理解用

使用call,也就可以把上面的代码等价于下面的代码:

hugo2 = {
    food : "bone",
    say: function(){
    console.log("My Name is "+ this.name +",I love "+this.food);
    }
}
 
hugo2.say();

可以看出函数调用的三种方式:

obj.myFunc();
myFunc.call(obj,arg);
myFunc.apply(obj,[arg1,arg2..]);

用通俗的话总结一下:就是用别人的东西,所以要call一下

另外,apply和call还有一个作用是改变this的指向,这个网上已经大把解释了,自行google一下吧。说太多反而不好理解。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78448.html

相关文章

  • 如何理解熟练运用js中callapply

    摘要:用的比较多的,通过选择的节点是一种类似的。它不能应用下的等方法。和都是为了改变某个函数运行时的即上下文而存在的,换句话说,就是为了改变函数体内部的指向。这些的话也就能明白它俩的用处以及它们定义。 要明白call以及apply 首先得知道他们的用法如何有什么用 function cat() {} cat.prototype = { foo...

    kuangcaibao 评论0 收藏0
  • 理解 JavaScript call()/apply()/bind()

    摘要:理解文章中已经比较全面的分析了在中的指向问题,用一句话来总结就是的指向一定是在执行时决定的,指向被调用函数的对象。与和直接执行原函数不同的是,返回的是一个新函数。这个新函数包裹了原函数,并且绑定了的指向为传入的。 理解 JavaScript this 文章中已经比较全面的分析了 this 在 JavaScript 中的指向问题,用一句话来总结就是:this 的指向一定是在执行时决定的,...

    duan199226 评论0 收藏0
  • 理解JavaScriptcall,applybind方法

    摘要:输出的作用与和一样,都是可以改变函数运行时上下文,区别是和在调用函数之后会立即执行,而方法调用并改变函数运行时上下文后,返回一个新的函数,供我们需要时再调用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改变函数运行时上下文,最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回undefined。这几个方法...

    chaosx110 评论0 收藏0
  • javascript技术难点(三)之this、new、applycall详解

    摘要:第四点也要着重讲下,记住构造函数被操作,要让正常作用最好不能在构造函数里 4) this、new、call和apply的相关问题 讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解this指针更加有现实意义。 下面我们看看在ja...

    ghnor 评论0 收藏0
  • 如何理解JavaScriptthis关键字

    摘要:原文链接参考深入理解原型和闭包完结王福朋博客园中的作用域详解博客园 前言 王福朋老师的 JavaScript原型和闭包系列 文章看了不下三遍了,最为一个初学者,每次看的时候都会有一种 大彻大悟 的感觉,而看完之后却总是一脸懵逼。原型与闭包 可以说是 JavaScirpt 中理解起来最难的部分了,当然,我也只是了解到了一些皮毛,对于 JavaScript OOP 更是缺乏经验。这里我想总...

    Yangder 评论0 收藏0

发表评论

0条评论

NoraXie

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<