2014-04-08 20 views
0

每次有人試圖訪問JavaScript中某個對象的特定屬性時,是否可以收到通知?該代碼必須在IE 8+/Firefox和Chrome中運行。 我見過Object.watch,但這似乎只適用於支持IE 8定義不支持的較新JavaScript的瀏覽器。如果有人訪問對象的屬性,會收到通知

感謝

+0

你是什麼意思,通知?像控制檯中的消息一樣? –

+0

您喜歡如何收到通知? – thefourtheye

+0

「什麼時候有人」,誰會那樣呢? – adeneo

回答

1

如果要做到這一點,你可以使用Javascript的,getter和setter的,一般不太知名的功能之一。

function MyObjectClassName (val) { 
    this.name = val; 
} 

MyObjectClassName.prototype = { 
    get name() { 
     console.log("You just accessed .name!"); 
     return this.name; 
    } 
}; 

var theObject = new MyObjectClassName("James"); 
var theName = theObject.name; 

這個例子的目的是自我解釋。當.name似乎直接訪問最後一行時,它將執行name()函數並打印到控制檯。

請注意,這被認爲是JavaScript的一個更危險的特性,如果您希望人們理解您的代碼或尊重您對安全性的注意(在訪問屬性時執行任意代碼,則不應該真正使用它) )。

+1

IIRC,IE8支持getter和setter。 –

+0

謝謝,這是有效的。 – Christian