每次有人試圖訪問JavaScript中某個對象的特定屬性時,是否可以收到通知?該代碼必須在IE 8+/Firefox和Chrome中運行。 我見過Object.watch,但這似乎只適用於支持IE 8定義不支持的較新JavaScript的瀏覽器。如果有人訪問對象的屬性,會收到通知
感謝
每次有人試圖訪問JavaScript中某個對象的特定屬性時,是否可以收到通知?該代碼必須在IE 8+/Firefox和Chrome中運行。 我見過Object.watch,但這似乎只適用於支持IE 8定義不支持的較新JavaScript的瀏覽器。如果有人訪問對象的屬性,會收到通知
感謝
如果要做到這一點,你可以使用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的一個更危險的特性,如果您希望人們理解您的代碼或尊重您對安全性的注意(在訪問屬性時執行任意代碼,則不應該真正使用它) )。
IIRC,IE8支持getter和setter。 –
謝謝,這是有效的。 – Christian
你是什麼意思,通知?像控制檯中的消息一樣? –
您喜歡如何收到通知? – thefourtheye
「什麼時候有人」,誰會那樣呢? – adeneo