आप हमेशा एक ऑब्जेक्ट का हिस्सा बन सकते हैं और फिर इसकी सामग्री को संशोधित करने के लिए एक विशेष फ़ंक्शन का उपयोग कर सकते हैं। या window
के माध्यम से उन्हें एक्सेस करें।
निम्नलिखित कोड जब मूल्यों जब तक आप प्रारूप changeIndex(myVars, 'variable', 5);
का उपयोग variable = 5;
की तुलना में बदल दिया गया है कस्टम घटनाओं आग इस्तेमाल किया जा सकता
उदाहरण:
function changeIndex(obj, prop, value, orgProp) {
if(typeof prop == 'string') { // Check to see if the prop is a string (first run)
return changeIndex(obj, prop.split('.'), value, prop);
} else if (prop.length === 1 && value !== undefined &&
typeof obj[prop[0]] === typeof value) {
// Check to see if the value of the passed argument matches the type of the current value
// Send custom event that the value has changed
var event = new CustomEvent('valueChanged', {'detail': {
prop : orgProp,
oldValue : obj[prop[0]],
newValue : value
}
});
window.dispatchEvent(event); // Send the custom event to the window
return obj[prop[0]] = value; // Set the value
} else if(value === undefined || typeof obj[prop[0]] !== typeof value) {
return;
} else {
// Recurse through the prop to get the correct property to change
return changeIndex(obj[prop[0]], prop.slice(1), value);
}
};
window.addEventListener('valueChanged', function(e) {
console.log("The value has changed for: " + e.detail.prop);
});
var myVars = {};
myVars.trafficLightIsGreen = false;
myVars.someoneIsRunningTheLight = false;
myVars.driverName = "John";
changeIndex(myVars, 'driverName', "Paul"); // The value has changed for: driverName
changeIndex(myVars, 'trafficLightIsGreen', true); // The value has changed for: traggicIsGreen
changeIndex(myVars, 'trafficLightIsGreen', 'false'); // Error. Doesn't set any value
var carname = "Pontiac";
var carNumber = 4;
changeIndex(window, 'carname', "Honda"); // The value has changed for: carname
changeIndex(window, 'carNumber', 4); // The value has changed for: carNumber
आप हमेशा खींचने के लिए चाहते हैं तो window
ऑब्जेक्ट से आप ओबीजे को हमेशा विंडो के लिए सेट करने के लिए changeIndex
संशोधित कर सकते हैं।
आपने पहले से क्या प्रयास किया है? –
उन्हें गेटटर और सेटर विधियों के साथ ऑब्जेक्ट्स में लपेटें, फिर ईवेंट को सेटटर में ट्रिगर करें। –
मुझे लगता है कि आप इस पर एक नज़र डालना चाहते हैं http://www.codeproject.com/Articles/13914/Observer- डिज़ाइन- पैटर्न- उपयोग- जावास्क्रिप्ट – MilkyWayJoe