在一些情況下梭稚,this值可能不是我們所期待的值竿开。如下面例子
1.window.identity = "Hello Worde!"
2.Let object = {
3. identity: 'My object',
4. getIdentity () {
5. return this.identity;
6. }
7.}
getIdentity ()方法就是返回this.identity的值涤躲。下面來看調用:
1.object.getIdentity(); //'My object'
2.(object.getIdentity)(); //'My object'
3.(object.getIdentity = object.getIdentity) (); //'Hello Worde!'
第一行的調用是正常調用,會返回“My object”糜颠,因為this.getIdentity就是this.getIdentity
第二行在調用時把object.getIdentity放在括號里。雖然加了括號之后看起來是對一個函數(shù)的引用萧求,但this值并沒有變其兴。這是按照規(guī)范,object.getIdentity和(object.getIdentity)是相等的夸政。
第三行執(zhí)行了一次賦值元旬,然后在調用賦值后的結果。因為賦值表達式是函數(shù)本身,this值不在與任何對象綁定匀归,所以返回的是“Hello Worde坑资!”。
一般情況下穆端,不大可能像第二行和第三行這樣調用對象上的方法袱贮。但通過這個例子,我們可以知道体啰,即使語法稍有不同攒巍,也可能影響this的值。