मेरे सोचता है, मुझे भी प्रतीकात्मक और पिछले जवाब के साथ गुप्त। स्पष्टीकरण निम्नानुसार है।
सरणी का एक उदाहरण, बूलियन, तिथि, समारोह, संख्या, रेगुलर एक्सप्रेशन, स्ट्रिंग एक वस्तु लेकिन तरीकों और गुण प्रत्येक प्रकार के लिए विशिष्ट के साथ बढ़ाया है। उदाहरण के लिए, एक सरणी में पूर्व निर्धारित length
संपत्ति होती है जबकि सामान्य वस्तुएं नहीं होती हैं।
javascript:alert([].length+'\n'+{}.length)
प्रदर्शित करता है
0
undefined
आंतरिक रूप से, एफएफ छिपकली दुभाषिया भी Arrays और भाषा निर्माणों का मूल्यांकन अलग अंतर के साथ सामान्य वस्तुओं में भेद किया।
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);
प्रदर्शित
one,two,three
[object Object]
["one", "two", "three"]
4 .toSource() forgot me!
3 and my length!
({0:"one", 1:"two", 2:"three", 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 के के विकास के समय - ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग शैली - "के" मेरे अपने यमक है !) प्रचलित था और दुभाषिया को जावा के साथ समान रूप से नामित किया गया ताकि वह अधिक विश्वसनीयता प्रदान कर सके। कार्यात्मक प्रोग्रामिंग तकनीकों को ऑटोमाटा, रिकर्सिव फ़ंक्शंस, औपचारिक भाषा इत्यादि के सिद्धांतों का अध्ययन करने और अधिक आकर्षक नहीं होने के कारण अधिक अमूर्त और गूढ़ परीक्षाओं में शामिल किया गया था। हालांकि, इन औपचारिक विचारों की ताकत जावास्क्रिप्ट में स्पष्ट रूप से प्रकट होती है, विशेष रूप से एफएफ के गेको इंजन (यानी .toSource()
) में लागू की गई है।
समारोह के लिए वस्तु परिभाषा विशेष रूप से संतोषजनक के लिए यह एक आवर्ती संबंध के रूप में परिभाषित किया गया है है! इसकी अपनी परिभाषा का उपयोग करके परिभाषित किया गया है!
function Function() { [native code] }
और एक समारोह के बाद से एक वस्तु के लिए
function Object() { [native code] }
एक ही भावना रखती है।
अन्य परिभाषाओं में से अधिकांश एक स्थिर टर्मिनल मान से पूछताछ करते हैं। हालांकि, eval()
एक विशेष रूप से शक्तिशाली आदिम है और इसलिए एक स्ट्रिंग मनमाने ढंग से कार्यक्षमता भी एम्बेड कर सकता है।
फिर से ध्यान दें, उपरोक्त शब्दकोष ऊपर ऑब्जेक्ट प्रकार और उदाहरण भेद को अस्पष्ट करता है।
myArray.length सरणी में अंतिम तत्व की संख्यात्मक अनुक्रमणिका/कुंजी देता है लेकिन तत्वों की वास्तविक संख्या नहीं। क्या ऐरे ऑब्जेक्ट के गुण सरणी मानों के समान नहीं हैं? –
मैं सिर्फ ऐरे ऑब्जेक्ट के इच्छित अर्थशास्त्र का वर्णन करने की कोशिश कर रहा था, यदि आप इसे नियमित वस्तु की तरह मानते हैं। लिंक्ड आलेख हालांकि बेहतर काम करता है :) –
अगली बार जब कोई कहता है कि जावास्क्रिप्ट विकसित करने के लिए एक अच्छी भाषा है, तो मैं उसे यह नमूना दिखाऊंगा। धन्यवाद। –