首頁  >  文章  >  web前端  >  javascript的call方法怎麼用

javascript的call方法怎麼用

青灯夜游
青灯夜游原創
2021-04-12 14:59:499753瀏覽

在javascript中,call方法可以用來取代一個物件呼叫一個方法,可以將一個函數的物件上下文從初始化改為新的對象,也就是括號裡面的原本的物件改為call()前面的物件。

javascript的call方法怎麼用

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

js中call()方法的用法

#1.call方法

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

定義:呼叫一個物件的一個方法,以另一個物件取代目前物件

說明:

call方法可以用來取代一個物件呼叫一個方法,call方法可以將一個函數的物件上下文從初始化改為新的對象,也就是括號裡面的原本的物件改為call()前面的物件、即用thisobj取代call前面的東西,最後用thisobj這個物件去執行call前面的方法。

如果沒有提供 thisObj 參數,那麼 Global 物件被用作 thisObj。

一如

<!DOCTYPE html>
<html>
<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 對象的參考。

【推薦學習:javascript高階教學

2.apply方法

語法:apply(thisobj ,[argArray])

定義:應用某一個物件的一個方法,用別另一個物件取代目前物件

#說明:

如果argArray 不是一個有效的陣列或不是arguments 對象,那麼將導致一個TypeError。 
如果沒有提供 argArray 和 thisObj 任何一個參數,那麼 Global 物件將被用作 thisObj, 並且無法被傳遞任何參數。

<!DOCTYPE html>
<html>
<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的繼承

#更多程式相關知識,請造訪:程式設計影片! !

以上是javascript的call方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn