क्योंकि Function
ही Function
console.log(Function instanceof Function);
console.log(Object.getPrototypeOf(Function) === Function.prototype);
तो के प्रोटोटाइप है, Function
रों प्रोटोटाइप में सभी कार्यों Function
भी में उपलब्ध हैं।
the specification का हवाला देते हुए,
समारोह प्रोटोटाइप वस्तु अपने आप में एक समारोह वस्तु है (अपने [[क्लास]] है "फंक्शन")
एक और तरीका है इस बात की पुष्टि करने के लिए इस होगा ,
console.log(Function.call === Function.prototype.call);
इसका मतलब है कि Function.call
ऑब्जेक्ट और Function.prototype.call
ऑब्जेक्ट समान हैं।
console.log(Function.hasOwnProperty('call'));
इसका मतलब है कि Function
वस्तु ही call
संपत्ति नहीं है।
console.log(Function.prototype.hasOwnProperty('call'));
इसका मतलब है कि Function.prototype
वस्तु call
संपत्ति है।
Array.slice
मौजूद नहीं है लेकिन Array.prototype.slice
कर
क्योंकि Array
समारोह के प्रोटोटाइप Function
वस्तु, नहीं Array
वस्तु है।
console.log(Object.getPrototypeOf(Array) === Function.prototype);
यही कारण है कि हम Array
समारोह पर call
, apply
, bind
आदि मिलता है। यह Array
ऑब्जेक्ट Array
का प्रोटोटाइप रहा था, तो slice
Array
ऑब्जेक्ट पर भी उपलब्ध होगा।
हाँ। समारोह एक कन्स्ट्रक्टर है। 'Array.call === Function.call'। – Louy
यह जावा "कक्षा" कक्षा के समान है? – valepu
@ valepu तरह, हाँ। यदि जावास्क्रिप्ट एक वर्ग-आधारित भाषा था तो हम कहेंगे कि 'फंक्शन' 'फंक्शन' का एक उदाहरण है, लेकिन जावा 'कक्षा' में * कक्षा 'का उदाहरण नहीं है (क्योंकि कक्षाएं 'कक्षा' के उदाहरण नहीं हैं, या सामान्य रूप से, कुछ भी)। 'क्लास' में अभी भी एक अजीब रिकर्सन चीज चल रही है, क्योंकि इसमें 'क्लास' और 'क्लास.क्लास == क्लास.क्लास.get क्लास() 'टाइप क्लास ऑब्जेक्ट है। – immibis