offsetWidth
एक संपत्ति है, और जब आप
करना
HTMLElement.prototype.offsetWidth
वास्तव में get
फ़ंक्शन को कॉल कर रहा है, इसलिए जब आप प्रोटोटाइप पर आज़माते हैं - आपको त्रुटि मिलती है।
तो आप संपत्ति निर्दिष्ट नहीं कर सकते हैं, इसके बजाय आप get descriptor for this property सभी सेटिंग्स के साथ, और फिर define property इस वर्णनकर्ता के साथ, लेकिन जिस नाम से आप चाहते हैं उसके साथ।
var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, "offsetWidth");
Object.defineProperty(HTMLElement.prototype, "w", descriptor);
var p = document.getElementById('p');
console.log('offsetwidth=%i, w=%i',p.offsetWidth,p.w);
<p id='p'>123</p>
और फिर आप मौजूदा HTMLElement पर नए w
संपत्ति कॉल कर सकते हैं।
आपकी टिप्पणी के लिए अपडेट करें।
यदि आप ऑब्जेक्ट में फ़ंक्शन जोड़ना चाहते हैं और ()
के बिना इसे कॉल करना चाहते हैं तो आपको गेटर के साथ संपत्ति को परिभाषित करना चाहिए।
नमूने के साथ गुणों के बारे में अधिक जानकारी के लिए दस्तावेज़ में देखें: MDN : Object.defineProperty()
Object.defineProperty(HTMLElement.prototype, "x", {
get: function() { return this.getBoundingClientRect().left }
});
var p = document.getElementById('p');
console.log('left=%i, x=%i',p.getBoundingClientRect().left,p.x);
<p id='p'>123</p>
आप [ 'Object.getOwnPropertyDescriptor()'] प्राप्त कर सकते हैं (https://developer.mozilla.org/एन-यूएस/डॉक्स/वेब/जावास्क्रिप्ट/संदर्भ/ग्लोबल_ऑब्जेक्ट्स/ऑब्जेक्ट/getOwnPropertyDescriptor) और फिर ['object.defineProperty()'] जोड़ें (https://developer.mozilla.org/en-US/docs/Web/ जावास्क्रिप्ट/संदर्भ/ग्लोबल_ऑब्जेक्ट्स/ऑब्जेक्ट/डिफिनप्रोपर्टी) जो नाम आप चाहते हैं – Grundy
@MarkC। 'HTMLElement.offsetWidth' _undefined_ – Grundy
@Grundy बिल्कुल सही है, मैंने कुछ गलत तरीके से पढ़ा था। मुझे सही करने के लिए धन्यवाद –