मेरे पास यह कोड है:

const obj = {name: 'maro', age: 77}

console.log(obj); // it logs { name: 'maro', age: 77 }

जाहिर सी बात लगती है! लेकिन मैं जानना चाहता हूं कि कैसे कंसोल.लॉग आंतरिक रूप से काम करता है? "ओबीजे" के कौन से तरीके "{नाम: 'मारो', आयु: 77}" प्राप्त करने के लिए कहते हैं

Obj में वे गुण हैं:

obj.__defineGetter__      obj.__defineSetter__      obj.__lookupGetter__      obj.__lookupSetter__      obj.__proto__             obj.constructor           obj.hasOwnProperty
obj.isPrototypeOf         obj.propertyIsEnumerable  obj.toLocaleString        obj.toString              obj.valueOf    obj.age        obj.name

लेकिन उनमें से कोई भी "{नाम: 'मारो', उम्र: 77}" नहीं लौटाता है!

यहां तक ​​कि obj.toString() रिटर्न '[object Object]'

3
maroodb 1 नवम्बर 2019, 17:04

4 जवाब

सबसे बढ़िया उत्तर

जैसा कि आप Node.js console.log प्रलेखन में देख सकते हैं, यह इसका उपयोग करता है, परदे के पीछे, util.format इसके आउटपुट को फॉर्मेट करने के लिए।

util.format प्रलेखन के अनुसार, यह किसी ऑब्जेक्ट का एक स्ट्रिंग प्रतिनिधित्व देता है जिसमें सामान्य JavaScript ऑब्जेक्ट स्वरूपण, util.inspect के समान।

आप कम से कम Node.js के लिए इसका वास्तविक कार्यान्वयन यहां देख सकते हैं: https://github.com/nodejs/node/blob/75dc8938a40100a53323ed87159a1ab2f149ceca/lib/internal/util/inspect.js#L1567। इस कोड को पढ़ने में मज़ा लें :)

1
Alberto Trindade Tavares 1 नवम्बर 2019, 18:14

अगर मैं गलत नहीं हूँ तो यह obj.valueOf() है। यहाँ दस्तावेज़ीकरण है: https://developer.mozilla.org/ en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf

2
Bwvolleyball 1 नवम्बर 2019, 17:38

आप valueOf() का उपयोग कर सकते हैं।

const object1 = {name:"ankit",age:27}
console.log(object1.valueOf());

नोट: स्ट्रिंग संदर्भों में ऑब्जेक्ट टूस्ट्रिंग () विधि के माध्यम से परिवर्तित होते हैं, जो स्ट्रिंग ऑब्जेक्ट्स से अलग है जो वैल्यूऑफ का उपयोग करके स्ट्रिंग प्राइमेटिव में परिवर्तित होता है। सभी वस्तुओं में एक स्ट्रिंग रूपांतरण होता है, यदि केवल "[ऑब्जेक्ट प्रकार]"। लेकिन कई वस्तुएं संख्या, बूलियन या फ़ंक्शन में परिवर्तित नहीं होती हैं।

0
Ankit Kumar Rajpoot 1 नवम्बर 2019, 17:38

यदि आपको 'मारो' नाम और 77 वर्ष की आयु की आवश्यकता है, तो आपको उपयोग करने की आवश्यकता है obj.name तथा obj.age...

-1
JosePena 1 नवम्बर 2019, 17:13