2012-05-07 25 views
7

जावास्क्रिप्ट में फ़ंक्शन जैसी चीजों के कई अलग-अलग "समूह" प्रतीत होते हैं।विभिन्न प्रकार के कार्यों के लिए शब्दावली

  • "नियमित कार्यों":: ये कोष्ठक के साथ और new साथ प्रतिदेय हैं यहाँ उनके लिए मेरी बनाया हुआ नाम हैं। अधिकांश कार्य इस श्रेणी में आते हैं।

  • "कन्स्ट्रक्टर-केवल फ़ंक्शंस": ये केवल new के साथ कॉल करने योग्य हैं। उदाहरण के लिए, Image, DOMParser, आदि

  • "गैर-रचनात्मक कार्य": ये माता-पिता के साथ कॉल करने योग्य हैं, लेकिन new के साथ नहीं। उदाहरण के लिए, Math.round, Function.prototype

  • "गैर-कॉल करने योग्य फ़ंक्शंस": ये फ़ंक्शंस बिल्कुल कॉल करने योग्य नहीं हैं। उदाहरण के लिए, window.constructor, Document, NodeList, आदि

के लिए कार्य करता है के इन विभिन्न समूहों के लिए उचित नाम क्या हैं?


मैं भी यह पता लगाने की कोशिश कर रहा हूँ जो अगर "समूह" एक समारोह में है इसकी [[Prototype]] (__proto__) संपत्ति Function.prototype पर सेट किया जाता है कि क्या के आधार पर निर्धारित किया जा सकता है।

  • अधिकांश "नियमित कार्यों" Function.prototype होगा, लेकिन इसका उपयोग गैर मानक __proto__ हटाया जा सकता है।

  • अधिकांश "कन्स्ट्रक्टर-केवल फ़ंक्शंस" में Object.prototype है। मुझे कोई भी मामले नहीं मिल रहा है जहां उनके पास Function.prototype है (इसलिए, call या apply)। क्या यह हमेशा मामला/spec'd व्यवहार है?

  • "गैर-कन्स्ट्रक्टर फ़ंक्शन" में Function.prototypeFunction.prototype के अपवाद के साथ अधिकतर प्रतीत होता है। क्या ऐसे अन्य मामले हैं जिनमें है?

  • "गैर-कॉल करने योग्य फ़ंक्शंस" में हमेशा Object.prototype लगता है। क्या यह मामला है?


मैं कुछ जवाब यहां का जवाब देंगे:

नियमित समारोह: function
कंस्ट्रक्टर: constructor
गैर निर्माता: method
गैर प्रतिदेय: interface

यह वास्तव में वह नहीं है जिसे मैं ढूंढ रहा हूं। "फ़ंक्शन" और "कन्स्ट्रक्टर" सामान्य रूप से सामान्य तरीके से सही होते हैं, लेकिन मैं कुछ और विशिष्ट ("गैर-कन्स्ट्रक्टर फ़ंक्शन" इत्यादि) की तलाश में हूं।

"विधि" कोई कह रहा है कि यह new साथ नहीं कहा जा सकता में "समारोह" की तुलना में बेहतर है, और constructor भर में है कि यह केवलnew साथ कहा जा सकता है बात समझ नहीं है।

कई मामलों में, गैर-कॉल करने योग्य फ़ंक्शंस केवल होस्ट ऑब्जेक्ट की constructor संपत्ति से पहुंच योग्य हैं। मुझे लगता है कि इनमें से अधिकांश अधिक सटीक रूप से "इंटरफेस" से "कन्स्ट्रक्टर" कहलाए जाएंगे।


[सामग्री के बारे में मेजबान देशी वस्तुओं बनाम वस्तुओं]

यह सही रास्ते पर एक तरह से है। this question (और स्वीकृत उत्तर, और इसकी टिप्पणियों) को ध्यान में रखते हुए, कुछ असहमति या भ्रम की प्रतीत होती है कि उपयोगकर्ता द्वारा परिभाषित फ़ंक्शंस होस्ट या मूल ऑब्जेक्ट्स हैं या नहीं।

इससे बचने के लिए, चलो बस उपयोगकर्ता द्वारा परिभाषित कार्यों को यूडीएफ कहते हैं, और इस बारे में चिंता न करें कि वे मेजबान या मूल हैं या नहीं। तो हमारे पास यूडीएफ, होस्ट ऑब्जेक्ट्स और मूल ऑब्जेक्ट्स हैं।

  • "नियमित कार्यों"

    • हर यूडीएफ

    • Object, String की तरह मूल निवासी वस्तुओं, आदि

      window.toString (क्रोम 18 में परीक्षण) की तरह
    • होस्ट वस्तुओं।

  • "निर्माता-केवल कार्यों"

    • कोई देशी वस्तुओं?

    • होस्ट ऑब्जेक्ट्स DOMParser, Image

  • "गैर-निर्माता कार्यों"

    • Math.round और Function.prototype की तरह मूल निवासी वस्तुओं।

    • होस्ट ऑब्जेक्ट्स DOMParser#parseFromString जैसे होस्ट ऑब्जेक्ट्स।

  • "गैर प्रतिदेय कार्यों"

    • कोई देशी वस्तुओं?

    • NodeList, DocumentFragment तरह होस्ट वस्तुओं।

तो ऐसा लगता है कि वहाँ मेजबान वस्तुओं और निर्माता-केवल/गैर प्रतिदेय कार्यों के बीच एक कनेक्शन हो सकता है, लेकिन मेजबान देशी बनाम गैर-निर्माता और नियमित रूप से कार्यों के लिए लागू करने के लिए प्रतीत नहीं होता।

+0

एक निचले स्तर पर। आप और आपके शब्दावली सवाल फिर से! :) – BoltClock

+0

हे, यह दिनों के लिए इस बार मुझे परेशान कर रहा है। मुझे आश्चर्य है अगर मैं सिर्फ कृत्रिम श्रेणियों जहां कोई भी देखते हैं ऊपर बना रही हूँ, लेकिन मैं इसे * कुछ * कॉल करना चाहता हूं। –

+1

[यहां] (https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript) ऑब्जेक्ट-ओरिएंटेड जावाएससीआर के लिए एक अच्छा परिचय है आईपीटी, जो आपके प्रश्न का उत्तर देना चाहिए। – sp00m

उत्तर

0

मैं वहाँ आप क्या कह रहे हैं के लिए एक आधिकारिक नामकरण है नहीं लगता है, लेकिन आमतौर पर यह कैसे लोगों को किसी भी प्रोग्रामिंग भाषा में उन सभी कार्यों कहते हैं:

  • नियमित समारोह: function
  • कंस्ट्रक्टर: constructor
  • गैर निर्माता: method
  • गैर प्रतिदेय: interface (जे एस के मामले में, यह एक निचले स्तर पर देशी वस्तुओं को संदर्भित करता है)
1

मुझे लगता है कि आप यहां क्या उठा रहे हैं, यह डेवलपर द्वारा बनाए और आपूर्ति किए गए एक्मास्क्रिप्ट और होस्ट ऑब्जेक्ट्स में निर्मित मूल वस्तुओं के बीच बारीकियों है।

ऑब्जेक्ट्स होस्ट करने के लिए "नियमित कार्य" मानचित्र, जेएस और "कन्स्ट्रक्टर-केवल फ़ंक्शंस", गैर-कन्स्ट्रक्टर फ़ंक्शन "और" गैर-कॉल करने योग्य फ़ंक्शंस "मानचित्र का उपयोग करके किए गए कार्यों को भाषा में निर्मित मूल वस्तुओं के लिए बनाया गया है

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

संबंधित मुद्दे