JS中函式四種呼叫方法
阿新 • • 發佈:2020-09-02
轉載:https://blog.csdn.net/piaoyinluo2316/article/details/84065234
首先我們要知道,JS中函式呼叫共有四種方法。call()就是其中一種。我先簡單的的說明以下四種方法:
我們先定義一個函式:
- function test(){
- /**do something**/
- }
1)第一種,也就是最常見的呼叫方法:
test();
2)第二種:物件呼叫
我們需要把定義的函式放到一個物件裡面(obj)
- var obj={
- test:function (){
- /**do something**/
- }
- }
呼叫:
obj.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回覆訊息!