JS 方法名.call()方法

首先我們要知道,JS中函數調用共有四種方法。call()就是其中一種。我先簡單的的說明以下四種方法:

我們先定義一個函數:

function test(){
    /**do something**/
}

1)第一種,也就是最常見的調用方法:

test();

2)第二種:對象調用

我們需要把定義的函數放到一個對象裏面(obj)

var obj={
    test:function (){
        /**do something**/
    }
}

調用: 

a.test();

3)第三種:構造函數調用


var tmp = new test();

4)第四種:使用call()或者applay()

這種方法調用的時候必須傳遞一個參數,只要不空着即可。

test.call(null)

其實,以上調用方式,隱含的傳遞了一個變量:this。

有點面向對象基礎的人都知道,this是一個“指針”,對於js來說,this指向了方法的作用域。而call()的作用,恰恰就是改變這個作用域(this)。也就是call(null)中必須的那個參數成爲了新的this。

再打個比方,call()就像現實生活中的打電話,首先打電話前要撥號,這個號碼就相當於this,必須有號碼纔有可能撥通電話。而撥打不同的號碼,即call(null)的參數值不同,接電話的人(作用域)也不同。而給接電話方傳遞的信息可以通過call(null,param,param,param....)的其他不必須參數傳遞,接電話的人也可以通過函數的return回覆消息!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章