JavaScript call和apply的区别是什么

JavaScript call和apply的区别是什么

JavaScript call()方法 调用方法时,将拥有者对象作为参数传入。关键字 this 指的是函数的‘拥有者’或所属对象。我们可以调用可用于不同对象的方法。

语法:

object.objectMethod.call( objectInstance, arguments )

JavaScript apply() 方法 apply() 方法用于编写可以在不同对象上使用的方法。它与函数 call() 不同,因为它接受一个数组作为参数。

语法:

object.objectMethod.apply(objectInstance, arrayOfArguments)

call()方法和apply()方法之间的区别: 唯一的区别是, call() 方法通过逗号分隔参数,而 apply() 方法通过参数数组。

示例1: 这个示例使用call()方法调用一个函数。

<body style="text-align:center;"> 
    <h1 style="color:green;"> 
        GeeksForGeeks 
    </h1> 
    <h3>call() method</h3> 
  
    <button onClick="fun()"> 
        click 
    </button> 
  
    <p id="GFG"></p> 
  
  
    <!-- Script to use call() method to call 
            function -->
    <script> 
        function fun() { 
        let p = { 
            fullName: function(addr1, addr2) { 
            return this.fName + " " + this.lName 
                    + ", " + addr1 + ", " + addr2; 
            } 
        } 
              
        let p1 = { 
            fName:"GFGfName", 
            lName: "GFGlName", 
        } 
              
        let x = p.fullName.call(p1, "India", "USA"); 
        document.getElementById("GFG").innerHTML = x; 
        } 
    </script> 
</body>

输出:

JavaScript call和apply的区别是什么

示例2: 使用apply()方法完成相同的工作。

<body style="text-align:center;"> 
  
    <h1 style="color:green;"> 
        GeeksForGeeks 
    </h1> 
    <h3>JavaScript apply() method</h3> 
  
    <button onClick="fun()"> 
        click 
    </button> 
  
    <p id="GFG"></p> 
  
  
    <script> 
        function fun() { 
            let p = { 
            fullName: function(addr1, addr2) { 
                return this.fName + " " + this.lName 
                        + ", " + addr1 + ", " + addr2; 
            } 
        } 
        let p1 = { 
            fName:"GFGfName", 
            lName: "GFGlName", 
        } 
            let x = p.fullName.apply(p1, ["India", "USA"]); 
            document.getElementById("GFG").innerHTML = x; 
        } 
    </script> 
</body>

输出:

JavaScript call和apply的区别是什么

让我们用表格形式理解差异 -:

JavaScript call() 方法 JavaScript apply() 方法
用于编写可用于不同对象的方法。 用于编写可用于不同对象的方法。
JavaScript 中的预定义方法。 其返回值是调用函数时提供的 this 值和参数的结果。
用于使对象使用属于不同对象的方法。 我们可以使用该函数的列表而不是数组。
该方法还可以接受参数。 该方法将参数作为数组传递。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程