बेस ऑब्जेक्ट पर Object.defineProperty()
का लाभ उठाने का प्रयास करते समय मैं एक हैंगअप में भाग रहा हूं। मैं Object.create()
का उपयोग करके उस ऑब्जेक्ट से गुणों का उत्तराधिकारी बनाना चाहता हूं, और फिर व्युत्पन्न ऑब्जेक्ट में अधिक गुण परिभाषित करना चाहता हूं (जिसे वहां से विरासत में प्राप्त किया जा सकता है)। मुझे ध्यान रखना चाहिए कि मैं इसे node.js. पर लक्षित कर रहा हूं।console.create से console.log() विरासत गुणों को क्यों नहीं दिखाता है?
var Base = {};
Object.defineProperty(Base, 'prop1', {
enumerable:true,
get:function(){ return 'prop1 value';}
});
Object.defineProperty(Base, 'prop2', {
enumerable:true,
value : 'prop 2 value'
});
Object.defineProperty(Base, 'create', {
value:function(){
return Object.create(Base);
}
});
console.log(Base);
var derived = Base.create();
Object.defineProperty(derived, 'prop3', {
enumerable:true,
value:'prop 3 value'
});
console.log(derived);
निम्नलिखित कौन सा आउटपुट:
{ prop1: [Getter], prop2: 'prop 2 value' }
{ prop3: 'prop 3 value' }
मैंने सोचा था कि console.log() विरासत में मिला गुण, साथ ही संपत्ति prop3
कि मैं परिभाषित करके बताना होगा
यहाँ एक उदाहरण है व्युत्पन्न वस्तु पर। ऐसा लगता है कि यह इस तरह से परिभाषित गुणों के लिए प्रोटोटाइप पदानुक्रम को नहीं देखता है। क्या वो सही है?
मैंने अपनी ऑब्जेक्ट के लिए toString()
विधि को ओवरराइड करने पर देखा, लेकिन ऐसा लगता है कि console.log() इसे कॉल नहीं करता है।
- मैं उन सभी के माध्यम से गणना किए बिना लॉग इन सभी गुण कैसे प्राप्त कर सकता हूं?
- क्या यह विरासत को लागू करने का एक वैध तरीका है?
संपादित करें:
- वहाँ Node.js 'पुस्तकालयों में एक और समारोह है कि काम करते हैं और लॉग विरासत में मिला गुण होता है?
आलसी के लिए दिखाने के लिए लग रहे हैं aDrjA/1/ –
स्टार्टर्स के लिए, 'कंसोल' का कार्यान्वयन ब्राउज़र-विशिष्ट है। आप वास्तव में उसी तरह व्यवहार करने के लिए इस पर भरोसा नहीं कर सकते हैं, ब्राउज़र पर ब्राउज़र, क्योंकि प्रत्येक विक्रेता गैर-मानक के साथ पूरी तरह से कुछ अलग कर रहा है। जब आप 'console.log (ऑब्जेक्ट);' क्रोम देव-टूल्स में, आपको एक विस्तारणीय नोड-पेड़ मिलता है, जिसमें सभी स्वामित्व वाली विधियां और गुण होते हैं, और इसमें 'प्रोटो' श्रृंखला भी होती है, जिसमें पूर्ण विरासत ढेर होता है ... प्रत्येक ब्राउजर में इसकी उम्मीद नहीं होने वाली है - कुछ ब्राउज़रों (डब्ल्यूपी 7 आईई 9) में प्रोग्राम क्रैश हो जाएंगे यदि उन्हें 'window.console' भी दिखाई देता है, क्योंकि उनके पास कार्यान्वयन भी नहीं है। – Norguard
*** "मुझे ध्यान रखना चाहिए कि मैं इसे node.js पर लक्षित कर रहा हूं।" *** –