मुझे लगता है, मुझे भी पिछले जवाब के साथ रूपक और गूढ़ है। क्लैरिफिकेशन इस प्रकार है।
ऐरे, बुलियन, दिनांक, फ़ंक्शन, संख्या, RegExp, स्ट्रिंग का एक उदाहरण एक वस्तु है, लेकिन प्रत्येक प्रकार के लिए विशिष्ट विधियों और गुणों के साथ बढ़ाया जाता है। उदाहरण के लिए, एक सरणी में एक पूर्वनिर्धारित lengthसंपत्ति होती है जबकि जेनेरिक ऑब्जेक्ट नहीं होते हैं।
javascript:alert([].length+'\n'+{}.length)
प्रदर्शित करता है
0
अपरिभाषित
आंतरिक रूप से, एफएफ गेको दुभाषिया भाषा के मूल्यांकन के साथ अलग-अलग मतभेदों के साथ एरे और जेनेरिक वस्तुओं के बीच भी अंतर करता है।
javascript:
ra=[ "one", "two", "three"]; ra.a=4;
ob={0:"one", 1:"two", 2:"three"}; ob.a=4;
alert(
ra +"\n\n"+
ob +"\n\n"+
ra.toSource() +"\n\n"+
ra.a +"\t .toSource() forgot me! \n\n"+
ra.length +"\t and my length! \n\n"+
ob.toSource());
ps=""; for(i in ra)ps+=i+" "; alert(ps); /* NB .length is missing! */
ps=""; for(i in ob)ps+=i+" "; alert(ps);
प्रदर्शित
एक दो तीन
[वस्तु वस्तु]
["एक दो तीन"]
4 .toSource () मुझे भूल गया!
3 और मेरी लंबाई!
({0: "एक", 1: "दो", 2: "तीन", a: 4})
और 0 1 2 aऔर 0 1 2 a।
सभी वस्तुओं के कार्य हैं इस कथन के बारे में:
यह न तो है और न ही वाक्य रचना शब्दार्थ सही तरह एक समारोह के रूप में एक मनमाना वस्तु उदाहरण का उपयोग करने के लिए है 123()या "abc"()या []()या {}()या obj()जहां objकिसी भी प्रकार के अलावा अन्य है Functionतो एक मनमाना वस्तु दृष्टान्त एक नहीं है, Function। हालाँकि, एक वस्तु दी गई है objऔर यह प्रकार है Array, Boolean, Date, ..., कैसे objएक के रूप में आया था Array, Boolean, Date, ...? एक क्या है Array, Boolean, Date, ...?
javascript:
alert([Array, Boolean, Date, Function,
Number, Object, RegExp, String] . join('\n\n') );
प्रदर्शित करता है
function Array() {
[native code]
}
function Boolean() {
[native code]
}
function Date() {
[native code]
}
function Function() {
[native code]
}
function Number() {
[native code]
}
function Object() {
[native code]
}
function RegExp() {
[native code]
}
function String() {
[native code]
}
हर मामले में, संतुलन के बिना, वस्तु प्रकार एक के रूप में प्रकट होता है function परिभाषा के , इसलिए यह कथन कि सभी ऑब्जेक्ट फ़ंक्शन हैं! (जीभ-इन-गाल यह है कि मैंने जानबूझकर अस्पष्ट और ऑब्जेक्ट प्रकार के अंतर को धुंधला कर दिया है क्योंकि यह टाइप है! फिर भी, यह दिखाता है कि "आपके पास एक के बिना दूसरा नहीं हो सकता", ऑब्जेक्ट और फ़ंक्शन! कैपिटलाइज़ेशन प्रकार पर जोर देता है उदाहरण के लिए विरोध।)
दोनों एक कार्यात्मक और वस्तु प्रतिमान प्रोग्रामिंग करने के लिए मौलिक और निम्न स्तर दुभाषिया जे एस के लागू करने लगते निर्मित जैसे पुरातन, Mathऔर JSONऔर true।
javascript:alert([Math, JSON, true.toSource()].join("\n\n"));
प्रदर्शित करता है
[object Math]
[object JSON]
(new Boolean(true))
जावास्क्रिप्ट के विकास के समय, एक वस्तु-केंद्रित प्रोग्रामिंग शैली (OOP's - ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग स्टाइल - "s" मेरा अपना दंड है!) प्रचलन में थी और दुभाषिया को इसी तरह अधिक विश्वसनीयता प्रदान करने के लिए Java पर समान रूप से नामांकित किया गया था! । ऑटोमैटिक, रिकर्सिव फंक्शंस, फॉर्मल लैंग्वेज आदि के सिद्धांतों का अध्ययन करने वाली अधिक सारगर्भित और गूढ़ परीक्षाओं के लिए कार्यात्मक प्रोग्रामिंग तकनीकों को फिर से लागू किया गया और जैसे कि तालमेल नहीं था। हालाँकि, इन औपचारिक विचारों की ताकत जावास्क्रिप्ट में विशेष रूप से एफएफ के गेको इंजन (यानी। .toSource()) में लागू होने के रूप में स्पष्ट रूप से प्रकट होती है ।
फ़ंक्शन के लिए ऑब्जेक्ट परिभाषा विशेष रूप से संतोषजनक है क्योंकि इसे पुनरावृत्ति संबंध के रूप में परिभाषित किया गया है! यह परिभाषा का उपयोग कर परिभाषित किया गया है!
function Function() { [native code] }
और चूंकि एक फ़ंक्शन एक ऑब्जेक्ट है, वही भावना के लिए है
function Object() { [native code] } ।
अन्य परिभाषाओं में से अधिकांश एक स्थिर टर्मिनल मान से अलग हैं। हालांकि, eval()एक विशेष रूप से शक्तिशाली आदिम है और इसलिए एक स्ट्रिंग भी मनमाना कार्यक्षमता को एम्बेड कर सकता है।
फिर से ध्यान दें, ऊपर का उपयोग किया गया अस्पष्ट वस्तु प्रकार और उदाहरण भेद को अस्पष्ट करता है।