`
reallyafei
  • 浏览: 98804 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

apply, call的用法与区别

阅读更多

相同点:两个方法产生的作用是完全一样的

不同点:方法传递的参数不同

在JavaScript中,代码总是有一个上下文对象,代码处理该对象之内. 上下文对象是通过this变量来体现的, 这个this变量永远指向当前代码所处的对象中

call, apply作用就是借用别人的方法来调用,就像调用自己的一样

call, apply方法区别是,从第二个参数起, call方法参数将依次传递给借用的方法作参数, 而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的.

如下例子可以看出它们的用法与区别

function A() {
    this.message = "A";
    this.getMessage = function() {
        return this.message;
    }
}

function B() {
    this.message = "B";
    this.setMessage = function(msg) {
        this.message = msg;
    }
    
}

var a = new A();
var b = new B();
b.setMessage.call(a,"A的消息");
alert(a.getMessage());
alert(a.getMessage.call(b));

function test(msg) {
   b.setMessage.apply(a,[msg]); 
 //  b.setMessage.apply(a,arguments); 
}
test("测试");
alert(a.getMessage());
 

分享到:
评论

相关推荐

    js中call与apply的用法小结

    两者的本质区别在于传递参数的方式:`call`接收参数列表,而`apply`接收一个包含参数的数组。在某些场景下,比如当你不确定参数数量或者参数是动态生成的时候,`apply`可能更为灵活。 ### 4. `call` 用于模拟继承 ...

    bind,apply,call的用法及区别

    bind,apply,call的用法及区别

    js中apply与call简单用法详解.docx

    ### JavaScript中的apply与call用法详解 #### 一、引言 在JavaScript中,`apply`与`call`是两个非常重要的函数,它们都属于`Function.prototype`的一部分,因此每一个函数对象都拥有这两个方法。这两个方法的主要...

    call与apply区别 详细解读.pdf

    call与apply区别详细解读 call和apply是JavaScript中的两个重要方法,它们都是Function.prototype中的方法,这意味着每个函数都可以使用这两个方法。它们的作用是改变函数体内的this对象的值,以扩充函数赖以运行的...

    关于Javascript中call与apply的进一步探讨

    `apply`方法与`call`类似,主要区别在于传递参数的方式。`apply`接受两个参数:第一个参数同样是`this`值,第二个参数是一个数组或类数组对象,其中的元素作为函数的参数: ```javascript func.apply(thisArg, ...

    js中call与apply的用法小结.docx

    接下来,`apply`的用法与`call`类似,但参数传递方式不同。`apply`的语法是`func.apply(context, [argsArray])`。这里,`context`同样用于指定`this`的值,而`argsArray`是一个数组或类数组对象,其元素会被作为单独...

    详解js中的apply与call的用法.docx

    `apply`方法与`call`类似,但它是接收一个数组或类数组对象作为参数,而不是逐个列出参数。其语法如下: ```javascript function.apply(thisArg, [argsArray]) ``` `argsArray`是一个数组或类数组对象,其元素会被...

    JavaScript中apply与call的用法意义及区别说明

    apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2…]]); 从函数原型...

    js中继承的几种用法总结(apply,call,prototype)

    `call` 和 `apply` 的主要区别在于第二个参数,`call` 方法接受的是一个个的参数列表,而 `apply` 方法接受的是一个数组。在使用时,选择哪一种取决于你期望的参数传递方式。 call和apply方法除了用于继承,还常...

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...

    apply和call方法定义及apply和call方法的区别

    在JavaScript中,`apply`和`call`方法都是Function对象的内置方法,它们的主要作用是改变函数调用时的上下文(即`this`值),并允许我们在不同对象上执行同一方法,从而实现方法的借用。这两者在功能上相似,但参数...

    详解js中call与apply关键字的作用.docx

    - `apply`和`call`的主要区别在于传递参数的方式。`apply`的第二个参数必须是一个数组或者类数组对象,它的元素会被作为单独的参数传递给函数。 - 在示例中,`func.apply(null,[1,2,3])`和`func.call(null,1,2,3)`...

    javascript中apply、call和bind的用法区分_.docx

    ### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...

    Js的call与apply1

    首先,让我们深入理解`call`和`apply`的基本用法。`call`接收两个参数:第一个参数是希望作为`this`值的对象,后续参数以逗号分隔的形式传入函数;`apply`同样接收第一个参数作为`this`值,但它第二个参数是一个数组...

    js中apply()和call()的区别与用法实例分析.docx

    在JavaScript中,`apply()`和`call()`是两种非常重要的函数调用方式,它们都是用于改变函数执行时的上下文,即改变`this`的指向。这两种方法的主要区别在于它们接收参数的方式,但最终目的都是为了让函数能在不同的...

    javascript中apply和call方法的作用及区别说明

    一、call和apply的说明 1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为...

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

    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向 语法: apply() 接收两...

    详解js中call与apply关键字的作用

    ### call和apply的作用与用法 1. **改变this指向**:当函数需要在特定的对象上下文中执行时,可以使用call或apply。例如,在全局函数中,this默认指向window,但有时我们希望它指向另一个对象。此时,call和apply就...

    开启Javascript中apply、call、bind的用法之旅模式

    2. apply与call的区别 apply和call在改变函数执行时的上下文(context)方面是相同的,它们的主要区别在于传参的方式。apply需要把参数放在一个数组里传递,而call则是接受一个参数列表。当参数数量未知时,通常使用...

    全面了解构造函数继承关键apply call

     apply和call的区别在哪里  2. apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用. apply:方法能劫持另外一个对象的...

Global site tag (gtag.js) - Google Analytics