1. 程式人生 > 實用技巧 >JS中函式四種呼叫方法

JS中函式四種呼叫方法

轉載:https://blog.csdn.net/piaoyinluo2316/article/details/84065234

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

我們先定義一個函式:

  1. function test(){
  2. /**do something**/
  3. }

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

test();

2)第二種:物件呼叫

我們需要把定義的函式放到一個物件裡面(obj)

  1. var obj={
  2. test:function (){
  3. /**do something**/
  4. }
  5. }

呼叫:

obj.test();

3)第三種:建構函式呼叫

  1. 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回覆訊息!