j**ascript函式有四種呼叫方法,每種方式的不同在於this的初始化。
1、作為乙個函式呼叫,預設為全域性物件。(this的值為全域性物件)
在 html 中預設的全域性物件是 html 頁面本身,所以函式是屬於 html 頁面。在瀏覽器中的頁面物件是瀏覽器視窗(window 物件)。以上函式會自動變為 window 物件的函式。
functionmyfunction(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指向呼叫函式方法的物件)
functionmyfunction(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 方...