悟透JavaScript之放下對象 -- 2

接  悟透JavaScript之放下對象 -- 1

 

WhoAmI.call(BillGates); //直接將BillGates 作爲this,調用WhoAmI。輸出:I'm B

ill Gates of object

WhoAmI.call(SteveJobs); //直接將SteveJobs 作爲this,調用WhoAmI。輸出:I'

m Steve Jobs of object

BillGates.WhoAmI.call(SteveJobs); //SteveJobs 作爲this,卻調用BillGates

WhoAmI 方法。輸出:I'm Steve Jobs of object

SteveJobs.WhoAmI.call(BillGates); //BillGates 作爲this,卻調用SteveJobs

WhoAmI 方法。輸出:I'm Bill Gates of object

WhoAmI.WhoAmI = WhoAmI; //WhoAmI 函數設置爲自身的方法。

WhoAmI.name = "WhoAmI";

WhoAmI.WhoAmI(); //此時的this WhoAmI 函數自己。輸出:I'm WhoA

mI of function

({name: "nobody", WhoAmI: WhoAmI}).WhoAmI(); //臨時創建一個匿名對象並

設置屬性後調用WhoAmI 方法。輸出:I'm nobody of object

從上面的代碼可以看出,同一個函數可以從不同的角度來調用,this 並不一定是函數本身所屬的對象。

this 只是在任意對象和function 元素結合時的一個概念,是種結合比起一般對象語言的默認結合更加靈

活,顯得更加超然和灑脫。

JavaScript 函數中,你只能把this 看成當前要服務的這個對象。this 是一個特殊的內置參數,根據this 參數,您可以訪問到這個對象的屬性和方法,但卻不能給this 參數賦值。在一般對象語言中,方法體代碼中的this 可以省略的,成員默認都首先是自己的。但JavaScript 卻不同,由於不存在自我

當訪問這個對象時,this 不可省略!

JavaScript 提供了傳遞this 參數的多種形式和手段,其中,象BillGates.WhoAmI()SteveJobs.

WhoAmI()這種形式,是傳遞this 參數最正規的形式,此時的this 就是函數所屬的對象本身。而大多數

情況下,我們也幾乎很少去採用那些借花仙佛的調用形式。但只我們要明白JavaScript 的這個自我與其

他編程語言的自我是不同的,這是一個放下了的自我,這就是JavaScript 特有的世界觀。

發佈了15 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章