js 函式的呼叫模式

2021-09-12 15:29:21 字數 1982 閱讀 6490

1、函式呼叫
呼叫乙個函式將暫停當前函式的執行,傳遞控制權和引數給新函式。除了函式宣告時定義的形參,每個函式還接受兩個附加的引數:this和arguments(arguments並不是乙個真正的陣列,它擁有length屬性,但它缺少陣列的所有方法)。引數this在物件導向程式設計中非常重要,它的值取決於呼叫的模式。

超出的引數會被忽略,如果過少,缺失的值被undefined代替。

2、方法模式
var myobj = 

};myobj.increment();

document.write(myobj.value);//1

myobj.increment(2);

document.write(myobj.value);//3

方法可以使用this去訪問,所以它能從物件取值或修改該物件。this到物件的繫結發生在呼叫的時候。這個「超級」遲繫結使得函式可以對this高度復用。通過this可取得它們所屬物件的上下文的方法稱為公共方法。

3、函式模式

var name = "zhangsan";//aa變數載入到了window物件上

function test();

test1();

}

test();

當函式以此模式呼叫時,this被繫結到全域性物件。這是語言設計的乙個錯誤。倘若語言設計正確,當內部函式被呼叫時,this應該仍然繫結到外部函式的this變數。這個設計錯誤的後果是方法不能利用內部函式來幫助它工作,因為內部函式的this被繫結了錯誤的值,所以不能共享該方法對物件的訪問權。

幸運的是,有乙個很容易的解決方案:如果該方法定義乙個變數並給它賦值為this,那麼內部函式就可以通過那個變數訪問到this,按照約定,我給那個變數命令為that

//目的:使用add方法對數值進行相加

//給myobject增加乙個double方法。

myobject.double = function();

helper();//以函式的形式呼叫helper

};//以方法模式呼叫double

myobject.double();

document.write(myobject.getvalue());//6,這樣helper方法可以使用this

4、構造器模式
物件例項呼叫原型中的方法時,該方法可以使用this訪問其建構函式內的屬性或方法。
//建立乙個名為quo的建構函式,它構造乙個帶有status屬性的物件。

var quo = function (str,name);

//給quo的所有例項提供乙個名為get_status的公共方法。

quo.prototype.get_status = function();

object.prototype.get_name = function();

//構造乙個quo例項

var myquo = new quo("confused","zhangsan");

//confused,document.write()和document.writeln都是js向客戶端寫入的方法,writeln是以行方式輸出的,但並不是指頁面實際效果中的換行,即頁面的實際效果是沒有換行的。

document.writeln(myquo.get_status());

document.write(myquo.get_name());//zhangsan

var mystatus = ;

//mystatus並沒有繼承自ouo.prototype。但我們可以在mystatus上呼叫get_status方法,儘管mystatus並沒有乙個名為get_status的方法

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函式的呼叫

j ascript函式有四種呼叫方法,每種方式的不同在於this的初始化。1 作為乙個函式呼叫,預設為全域性物件。this的值為全域性物件 在 html 中預設的全域性物件是 html 頁面本身,所以函式是屬於 html 頁面。在瀏覽器中的頁面物件是瀏覽器視窗 window 物件 以上函式會自動變為...