ECMAScript 5 में, आप केवल विशिष्ट नामित गुणों पर सेट संचालन मिल/(नहीं सार्वभौमिक सभी गुण) Object.defineProperty
के माध्यम से रोक सकता ।
आगामी ECMAScript 6 मसौदा में, इस proxies के माध्यम से संभव हो जाएगा। प्रॉक्सी में अंतर्निहित लक्ष्य वस्तु होती है और फ़ंक्शन सेट/प्राप्त होती है। प्रॉक्सी की किसी भी संपत्ति पर किसी भी समय एक सेट या ऑपरेशन होता है, उचित फ़ंक्शन चलता है, प्रॉक्सी की लक्षित ऑब्जेक्ट, प्रॉपर्टी नाम का उपयोग तर्क और set
प्रयास में उपयोग किए जाने वाले मान के रूप में लेता है।
var proxyHandler = {
get: function(obj, name){
console.log("you're getting property " + name);
return target[name];
},
set: function(obj, name, value) {
console.log("you're setting property " + name);
target[name] = value;
}
}
var underlyingObj = {};
// use prox instead of underlyingObj to use get/set interceptor functions
var prox = new Proxy(underlyingObj, proxyHandler);
यहाँ, prox
पर संपत्ति मूल्यों हो रही set
/get
कार्यों को चलाने के लिए कारण होगा के लिए सेटिंग।
मुझे नहीं लगता कि इसके लिए कोई तरीका है कि यहां तक कि किसी भी गैर मानक कार्यान्वयन, और साथ निश्चित रूप से नहीं ECMAScript 5. साथ वहाँ एक गैर मानक कार्यान्वयन __noSuchMethod__' बुलाया 'फ़ायरफ़ॉक्स में तरीकों के लिए है, और पर आ सकते हैं क्रोम, लेकिन गैर-फ़ंक्शन गुणों के लिए कुछ भी समान नहीं है। एकमात्र मार्ग एक रैपर फ़ंक्शन का उपयोग करता है जैसे 'get' जिसके माध्यम से सभी गुणों का उपयोग किया जाता है। – Anurag
संबंधित: [सभी गुण के लिए जावास्क्रिप्ट गेटर] (http://stackoverflow.com/q/994143/1048572) – Bergi