js中call()方法的用法

本文深入解析JavaScript中的call和apply方法,阐述它们如何改变函数的上下文,实现方法借用及继承。通过具体示例,展示call和apply在实际编程中的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.call方法

语法:call(thisobj,[argq,arg2])

定义:调用一个对象的一个方法,以另一个对象替换当前对象

说明:

call方法可以用来代替一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始化改为新的对象,也就是括号里面的原本的对象改为call()前面的对象、即用thisobj代替call前面的东西,最终用thisobj这个对象去执行call前面的方法。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 

一如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js中call方法的使用</title>
</head>

<body>
<p id="id1">新年</p>
</body>

</html>

<script>
    function add(a,b){
        alert(a+b);
    }
    function sub(a,b){
        alert(a-b);
    }
    document.getElementById("id1").onclick = function(){
        add.call(sub,3,1);
    }

</script>

add代替sub   ,最总结过输出

这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

2.apply方法

语法:apply(thisobj,[argArray])

定义:应用某一个对象的一个方法,用别另一个对象替换当前对象

说明:

如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js中call方法的使用</title>
</head>

<body>
<p id="id1">新年</p>
</body>

</html>

<script>
    function Animal(){
        this.name = "Animal";
        this.showName=function(){
            alert(this.name);
        }
    }
    function Cat(){
        this.name = "Cat";
    }

    document.getElementById("id1").onclick = function(){
        var animal = new Animal();
        var cat = new Cat();
        // 通过call或apply方法,将原本属于Animal对象的showName方法交给对象call来使用了
        animal.showName.apply(cat,[]);
        animal.showName.call(cat,",");

    }


</script>

注意apply的参数和call方法的参数是不同的,apply是一个数组

 

3.call实现js的继承

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值