मैं क्रोम के नवीनतम संस्करण में ऑब्जेक्ट.ब्सर्व के साथ खेल रहा था और सोच रहा था कि यह टेक्स्ट इनपुट की 'मान' संपत्ति के लिए क्यों काम नहीं करता है। नीचे दिया गया कोड 'foo' संपत्ति को जोड़ने/बदलने के लिए एक परिवर्तन लॉग करेगा, लेकिन मूल्य संपत्ति को बदलने के लिए नहीं। किसी को पता है क्यों?object.observe इनपुट फ़ील्ड की मान संपत्ति के लिए क्यों काम नहीं करता है?
var myTextInput = document.getElementById('myTextInput');
Object.observe(myTextInput, function(changes){
changes.forEach(function(change) {
console.log(change);
});
});
myTextInput.value = 'test123';
myTextInput.foo = 'bar';
शायद क्योंकि डोम नोड होस्ट ऑब्जेक्ट्स हैं और मूल रूप से जो कुछ भी वे चाहते हैं (कर सकते हैं) कर सकते हैं। यह भी ध्यान रखें कि 'ऑब्जेक्ट.ब्सर्व' ईएस 7 का हिस्सा है, अत्यधिक प्रयोगात्मक और अंतिम रूप दिया गया है। –
'.value' डोम संपत्ति को गेटर/सेटर के रूप में लागू किया गया है, इसलिए यह वास्तव में नहीं बदलता है। – Bergi
@ बर्गि ऐसा लगता है कि यह क्या हो सकता है। MutationObservers भी एक ही कारण के लिए इनपुट की मूल्य संपत्ति नहीं उठाते हैं। मुझे आश्चर्य है कि मूल्य कैसे संग्रहीत किया जाता है। – user2054105