Objectईव है, और Functionएडम है, एडम ( Function) Function.prototypeईव ( Object) बनाने के लिए अपनी हड्डी ( ) का उपयोग करता है । फिर आदम को किसने बनाया (Function ) को ? - जावास्क्रिप्ट भाषा का आविष्कारक :-)।
Utsaina के उत्तर के अनुसार, मैं अधिक उपयोगी जानकारी जोड़ना चाहता हूं।
मेरे लिए सबसे आश्चर्यजनक बात यह थी कि इसके बजाय, उस Object.__proto__
बिंदु की खोज की जा रही थी , लेकिन मुझे यकीन है कि इसके लिए एक अच्छा कारण है :-)Function.prototypeObject.prototype
यह नहीं होना चाहिए। Object.__proto__को इंगित नहीं करना चाहिए Object.prototype। इसके बजाय, उदाहरण Object o, o.__proto__को इंगित करना चाहिएObject.prototype ।
(शर्तों का उपयोग करने के लिए मुझे क्षमा करें classऔरinstance जावास्क्रिप्ट , लेकिन आप इसे जानते हैं :-)
मुझे लगता है कि वर्ग Objectही इसका एक उदाहरण है Function, इसीलिए Object.__proto__ === Function.prototype। इसलिए: Objectईव है, और Functionएडम है, एडम ( Function) Function.prototypeईव बनाने के लिए अपनी हड्डी ( ) का उपयोग करता है (Object )।
इसके अलावा, यहां तक कि वर्ग Functionखुद का एक उदाहरण Functionहै Function.__proto__ === Function.prototype, यही कारण है कि यह भी हैFunction === Function.constructor
इसके अलावा, नियमित वर्ग Catइसका उदाहरण Functionहै Cat.__proto__ === Function.prototype।
उपरोक्त का कारण है, जब हम जावास्क्रिप्ट में एक वर्ग बनाते हैं, वास्तव में, हम केवल एक फ़ंक्शन बना रहे हैं, जिसका एक उदाहरण होना चाहिए Function। Objectऔर Functionसिर्फ विशेष हैं, लेकिन वे अभी भी कक्षाएं हैं, जबकि Catएक नियमित वर्ग है।
कारक के रूप में, Google Chrome जावास्क्रिप्ट इंजन में, निम्नलिखित 4:
Function.prototype
Function.__proto__
Object.__proto__
Cat.__proto__
वे ===अन्य 3 के लिए सभी (बिल्कुल बराबर) हैं, और उनका मूल्य हैfunction Empty() {}
> Function.prototype
function Empty() {}
> Function.__proto__
function Empty() {}
> Object.__proto__
function Empty() {}
> Cat.__proto__
function Empty() {}
> Function.prototype === Function.__proto__
true
> Function.__proto__ === Object.__proto__
true
> Object.__proto__ === Cat.__proto__
true
ठीक है। फिर विशेष function Empty() {}( Function.prototype) का निर्माण कौन करता है ? इसके बारे में सोचो :-)