js函式的呼叫

2022-09-16 11:45:13 字數 1417 閱讀 2933

j**ascript函式有四種呼叫方法,每種方式的不同在於this的初始化。

1、作為乙個函式呼叫,預設為全域性物件。(this的值為全域性物件)

在 html 中預設的全域性物件是 html 頁面本身,所以函式是屬於 html 頁面。在瀏覽器中的頁面物件是瀏覽器視窗(window 物件)。以上函式會自動變為 window 物件的函式。

function

myfunction(a, b)

myfunction(1, 2);//

2

注:這是呼叫 j**ascript 函式常用的方法, 但不是良好的程式設計習慣,全域性變數,方法或函式容易造成命名衝突的bug。

2、函式作為方法呼叫。(this值為方法的物件)

在 j**ascript 中你可以將函式定義為物件的方法。

var myobject =

}myobject.fullname();

//john doe

fullname方法是乙個函式。函式屬於物件。myobject是函式的所有者。例項中 this 的值為 myobject 物件。

注:函式作為物件方法呼叫,會使得 this 的值成為物件本身。

3、使用建構函式呼叫函式(this指向例項化新建立的物件)

如果函式呼叫前使用了new關鍵字,則是呼叫了建構函式。這個看起來就像建立了新的函式,但實際上j**ascript函式是重新建立的物件。

//

建構函式

function

mmyfunction(arg1, arg2)

//重新建立的物件

var x = new myfunction('john','doe');

x.firstname;

//john

注:(1)建構函式的呼叫會建立乙個新的物件。新物件會繼承建構函式的屬性和方法。

(2)建構函式中 this 關鍵字沒有任何的值。this 的值在函式呼叫時例項化物件(new object)時建立。

4、作為函式方法呼叫函式(this指向呼叫函式方法的物件)

function

myfunction(a, b)

myobject = myfunction.call(myobject, 10, 2); //

返回 20

myarray = [10, 2];

返20

合成為乙個陣列傳入,而call則作為call的引數傳入(從第二個引數開始)。

(2)在 j**ascript 嚴格模式(strict mode)下, 在呼叫函式時第乙個引數會成為 this 的值, 即使該引數不是乙個物件。

(3)在 j**ascript 非嚴格模式(non-strict mode)下, 如果第乙個引數的值是 null 或 undefined, 它將使用全域性物件替代。

js 函式的呼叫

function jc n else 此處也就是函式jc n var result jc 10 方法一 函式名 實參列表 console.log result function foo a,b,c foo 1,2,3 foo.call 1,2,3 方法二 函式名.call 執行環境物件,實參列表 此...

js函式的呼叫

一 函式 1.輸入兩個,再輸入運算子,得到結果 view code 自定義函式 view code 2.如果其他的檔案需要使用函式怎麼做?myfunction.jsp function jisuan num1,num2,operaor else return result view code htm...

js函式呼叫

呼叫方法 new object 函式名 實參列表 function jc n else 此處也就是函式jc n var result jc 10 方法一 函式名 實參列表 console.log result function foo a,b,c foo 1,2,3 foo.call 1,2,3 方...