javascript - जावास्क्रिप्ट में 'नया' कीवर्ड क्या है?




new-operator (12)

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

  • यह क्या है?
  • यह किस समस्या का समाधान करता है?
  • यह कब उचित है और कब नहीं?

Answers

जावास्क्रिप्ट एक ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषा है और इसका उपयोग उदाहरण बनाने के लिए बिल्कुल किया जाता है। यह वर्ग-आधारित के बजाय प्रोटोटाइप-आधारित है, लेकिन इसका मतलब यह नहीं है कि यह ऑब्जेक्ट उन्मुख नहीं है।


new कीवर्ड उस संदर्भ को बदलता है जिसके तहत फ़ंक्शन चलाया जा रहा है और उस संदर्भ में पॉइंटर लौटाता है।

जब आप new कीवर्ड का उपयोग नहीं करते हैं, तो संदर्भ जिसके तहत Vehicle() रन चलता है वही संदर्भ है जिससे आप Vehicle समारोह को बुला रहे हैं। this कीवर्ड एक ही संदर्भ का संदर्भ देगा। जब आप new Vehicle() उपयोग करते हैं, तो एक नया संदर्भ बनाया जाता है, इसलिए फ़ंक्शन के अंदर this कीवर्ड नए संदर्भ को संदर्भित करता है। बदले में आपको क्या मिलता है नव निर्मित संदर्भ है।


new कीवर्ड कन्स्ट्रक्टर के रूप में कार्यों का उपयोग करके ऑब्जेक्ट्स के उदाहरण बनाता है। उदाहरण के लिए:

var Foo = function() {};
Foo.prototype.bar = 'bar';

var foo = new Foo();
foo instanceof Foo; // true

उदाहरण कन्स्ट्रक्टर फ़ंक्शन के prototype से प्राप्त होते हैं। तो उपर्युक्त उदाहरण दिया गया ...

foo.bar; // 'bar'

यह 5 चीजें करता है:

  1. यह एक नई वस्तु बनाता है। इस वस्तु का प्रकार बस वस्तु है
  2. यह इस नए ऑब्जेक्ट के आंतरिक, अप्राप्य, [[प्रोटोटाइप]] (यानी __proto__ ) प्रॉपर्टी को कन्स्ट्रक्टर फ़ंक्शन के बाहरी, सुलभ, प्रोटोटाइप ऑब्जेक्ट (प्रत्येक फ़ंक्शन ऑब्जेक्ट में स्वचालित रूप से प्रोटोटाइप प्रॉपर्टी) सेट करता है।
  3. यह this परिवर्तनीय बिंदु को नव निर्मित वस्तु को बनाता है।
  4. जब भी इसका उल्लेख किया जाता है तो नव निर्मित ऑब्जेक्ट का उपयोग करके यह कन्स्ट्रक्टर फ़ंक्शन निष्पादित करता है।
  5. यह नव निर्मित ऑब्जेक्ट देता है, जब तक कि कन्स्ट्रक्टर फ़ंक्शन एक गैर- null ऑब्जेक्ट संदर्भ देता है। इस मामले में, उस ऑब्जेक्ट संदर्भ को बदले में वापस कर दिया जाता है।

नोट: कन्स्ट्रक्टर फ़ंक्शन new कीवर्ड के बाद फ़ंक्शन को संदर्भित करता है, जैसा कि

new ConstructorFunction(arg1, arg2)

एक बार ऐसा करने के बाद, यदि नई ऑब्जेक्ट की एक अपरिभाषित संपत्ति का अनुरोध किया जाता है, तो स्क्रिप्ट इसके बजाय संपत्ति के लिए ऑब्जेक्ट की [[प्रोटोटाइप]] ऑब्जेक्ट की जांच करेगी। इस प्रकार आप जावास्क्रिप्ट में पारंपरिक वर्ग विरासत के समान कुछ प्राप्त कर सकते हैं।

इसके बारे में सबसे कठिन हिस्सा बिंदु संख्या 2 है। प्रत्येक ऑब्जेक्ट (फ़ंक्शंस समेत) में यह आंतरिक संपत्ति है [[प्रोटोटाइप]] । इसे केवल ऑब्जेक्ट निर्माण समय पर, ऑब्जेक्ट.क्रेट के साथ, या शाब्दिक (फ़ंक्शंस.प्रोटोटाइप पर डिफ़ॉल्ट फ़ंक्शंस, संख्याओं के लिए संख्या। प्रोटीोटाइप इत्यादि) के आधार पर सेट किया जा सकता है। इसे केवल Object.getPrototypeOf (someObject) के साथ पढ़ा जा सकता है। इस मूल्य को सेट या पढ़ने का कोई और तरीका नहीं है

छिपे हुए [[प्रोटोटाइप]] संपत्ति के अतिरिक्त कार्य, प्रोटोटाइप नामक एक संपत्ति भी है, और यह है कि आप जो वस्तुएं बनाते हैं, उनके लिए विरासत गुण और विधियां प्रदान करने के लिए आप इसका उपयोग कर सकते हैं और संशोधित कर सकते हैं।

यहाँ एक उदाहरण है:

ObjMaker = function() {this.a = 'first';};
// ObjMaker is just a function, there's nothing special about it that makes 
// it a constructor.

ObjMaker.prototype.b = 'second';
// like all functions, ObjMaker has an accessible prototype property that 
// we can alter. I just added a property called 'b' to it. Like 
// all objects, ObjMaker also has an inaccessible [[prototype]] property
// that we can't do anything with

obj1 = new ObjMaker();
// 3 things just happened.
// A new, empty object was created called obj1.  At first obj1 was the same
// as {}. The [[prototype]] property of obj1 was then set to the current
// object value of the ObjMaker.prototype (if ObjMaker.prototype is later
// assigned a new object value, obj1's [[prototype]] will not change, but you
// can alter the properties of ObjMaker.prototype to add to both the
// prototype and [[prototype]]). The ObjMaker function was executed, with
// obj1 in place of this... so obj1.a was set to 'first'.

obj1.a;
// returns 'first'
obj1.b;
// obj1 doesn't have a property called 'b', so JavaScript checks 
// its [[prototype]]. Its [[prototype]] is the same as ObjMaker.prototype
// ObjMaker.prototype has a property called 'b' with value 'second'
// returns 'second'

यह वर्ग विरासत की तरह है क्योंकि अब, आप जो भी ऑब्जेक्ट्स new ObjMaker() का उपयोग करते हैं, वे भी 'बी' संपत्ति विरासत में पाएंगे।

यदि आप सबक्लास की तरह कुछ चाहते हैं, तो आप यह करते हैं:

SubObjMaker = function () {};
SubObjMaker.prototype = new ObjMaker(); // note: this pattern is deprecated!
// Because we used 'new', the [[prototype]] property of SubObjMaker.prototype
// is now set to the object value of ObjMaker.prototype.
// The modern way to do this is with Object.create(), which was added in ECMAScript 5:
// SubObjMaker.prototype = Object.create(ObjMaker.prototype);

SubObjMaker.prototype.c = 'third';  
obj2 = new SubObjMaker();
// [[prototype]] property of obj2 is now set to SubObjMaker.prototype
// Remember that the [[prototype]] property of SubObjMaker.prototype
// is ObjMaker.prototype. So now obj2 has a prototype chain!
// obj2 ---> SubObjMaker.prototype ---> ObjMaker.prototype

obj2.c;
// returns 'third', from SubObjMaker.prototype

obj2.b;
// returns 'second', from ObjMaker.prototype

obj2.a;
// returns 'first', from SubObjMaker.prototype, because SubObjMaker.prototype 
// was created with the ObjMaker function, which assigned a for us

आखिरकार इस पृष्ठ को ढूंढने से पहले मैंने इस विषय पर बकवास का एक टन पढ़ा, जहां इसे अच्छे आरेखों के साथ बहुत अच्छी तरह से समझाया गया है।


शुरुआत के लिए इसे बेहतर समझने के लिए

कंसोल में निम्न कोड आज़माएं।

function Foo() { 
    return this; 
}

var a = Foo();       //returns window object
var b = new Foo();   //returns empty object of foo

console.log(a instanceof Window);  // true
console.log(a instanceof Foo);     // false

console.log(b instanceof Window);  // false
console.log(b instanceof Foo);     // true

अब आप समुदाय विकी जवाब पढ़ सकते हैं :)


तो शायद यह वस्तु के उदाहरण बनाने के लिए नहीं है

इसका उपयोग बिल्कुल इसके लिए किया जाता है। आप इस तरह एक फ़ंक्शन कन्स्ट्रक्टर को परिभाषित करते हैं:

function Person(name) {
    this.name = name;
}

var john = new Person('John');

हालांकि .prototype के अतिरिक्त लाभ यह है कि आप .prototype संपत्ति के साथ विस्तार कर सकते हैं, इसलिए हम कुछ ऐसा कर सकते हैं ...

Person.prototype.getName = function() { return this.name; }

इस कन्स्ट्रक्टर से बनाए गए सभी ऑब्जेक्ट्स के पास अब प्रोटोटाइप श्रृंखला की getName कारण getName होगा।


मान लें कि आपके पास यह कार्य है:

var Foo = function(){
  this.A = 1;
  this.B = 2;
};

यदि आप इसे एक स्टैंडअलोन फ़ंक्शन के रूप में कहते हैं:

Foo();

इस फ़ंक्शन को निष्पादित करने से window ऑब्जेक्ट ( A और B ) में दो गुण जोड़े जाएंगे। यह इसे window जोड़ता है क्योंकि window वह ऑब्जेक्ट है जिसे फ़ंक्शन कहा जाता है जब आप इसे निष्पादित करते हैं, और this फ़ंक्शन में वह ऑब्जेक्ट होता है जिसे फ़ंक्शन कहा जाता है। कम से कम जावास्क्रिप्ट में।

अब, इसे new साथ इस तरह कहते हैं:

var bar = new Foo();

जब आप किसी फ़ंक्शन कॉल में new जोड़ते हैं तो क्या होता है यह है कि एक नई ऑब्जेक्ट बनाई गई है (केवल var bar = new Object() ) और यह फ़ंक्शन के भीतर this आपके द्वारा बनाए गए ऑब्जेक्ट के बजाए आपके द्वारा बनाए गए नए Object को इंगित करता है कार्यक्रम। तो bar अब संपत्ति A और B साथ एक वस्तु है। कोई भी कार्य एक कन्स्ट्रक्टर हो सकता है, यह हमेशा समझ में नहीं आता है।


जावास्क्रिप्ट एक गतिशील प्रोग्रामिंग भाषा है जो ऑब्जेक्ट उन्मुख प्रोग्रामिंग प्रतिमान का समर्थन करती है, और यह ऑब्जेक्ट के नए उदाहरण बनाने के लिए उपयोग की जाती है।

वस्तुओं के लिए कक्षाएं आवश्यक नहीं हैं - जावास्क्रिप्ट एक प्रोटोटाइप आधारित भाषा है।


डैनियल हावर्ड के जवाब के अलावा, यहां new क्या है (या कम से कम ऐसा लगता है):

function New(func) {
    var res = {};
    if (func.prototype !== null) {
        res.__proto__ = func.prototype;
    }
    var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));
    if ((typeof ret === "object" || typeof ret === "function") && ret !== null) {
        return ret;
    }
    return res;
}

जबकि

var obj = New(A, 1, 2);

के बराबर है

var obj = new A(1, 2);

new कीवर्ड नए ऑब्जेक्ट उदाहरण बनाने के लिए है। और हाँ, जावास्क्रिप्ट एक गतिशील प्रोग्रामिंग भाषा है, जो ऑब्जेक्ट उन्मुख प्रोग्रामिंग प्रतिमान का समर्थन करता है। ऑब्जेक्ट नामकरण के बारे में सम्मेलन हमेशा उन वस्तुओं के लिए पूंजी पत्र का उपयोग करता है जिन्हें नए कीवर्ड द्वारा तत्काल माना जाना चाहिए।

obj = new Element();

कभी-कभी कोड शब्दों से आसान है:

var func1 = function (x) { this.x = x; }                    // used with 'new' only
var func2 = function (x) { var z={}; z.x = x; return z; }   // used both ways
func1.prototype.y = 11;
func2.prototype.y = 12;

A1 = new func1(1);      // has A1.x  AND  A1.y
A2 =     func1(1);      // undefined ('this' refers to 'window')
B1 = new func2(2);      // has B1.x  ONLY
B2 =     func2(2);      // has B2.x  ONLY

मेरे लिए, जब तक मैं प्रोटोटाइप नहीं करता, मैं func2 की शैली का उपयोग करता हूं क्योंकि यह मुझे फ़ंक्शन के अंदर और बाहर थोड़ा और लचीलापन देता है।


एस्बेस्टोस longjohns डोनिंग ...

कल पैकेट प्रकाशनों के साथ मेरा शीर्षक, जावास्क्रिप्ट के साथ प्रतिक्रियाशील प्रोग्रामिंग । यह वास्तव में एक नोड.जेएस-केंद्रित शीर्षक नहीं है; शुरुआती अध्यायों का उद्देश्य सिद्धांत को कवर करना है, और बाद में कोड-भारी अध्याय अभ्यास अभ्यास। क्योंकि मैंने वास्तव में नहीं सोचा था कि पाठकों को एक वेबसर्वर देने में असफल होना उचित होगा, नोड.जेएस को स्पष्ट पसंद से लग रहा था। मामला भी खोला जाने से पहले बंद कर दिया गया था।

मैं Node.js. के साथ अपने अनुभव का एक बहुत गुलाबी दृश्य दे सकता था। इसके बजाय मैं अच्छे अंक और बुरे बिंदुओं के बारे में ईमानदार था।

मुझे कुछ उद्धरण शामिल करने दें जो यहां प्रासंगिक हैं:

चेतावनी: नोड.जेएस और इसके पारिस्थितिकी तंत्र गर्म हैं - आपको बुरी तरह जला देने के लिए पर्याप्त!

जब मैं गणित में शिक्षक का सहायक था, तो मुझे बताए गए एक गैर-स्पष्ट सुझावों में से एक यह नहीं था कि कुछ "आसान" था। कारण पीछे की ओर कुछ स्पष्ट था: अगर आप लोगों को कुछ आसान कहते हैं, तो कोई कोई समाधान नहीं देखता है (और भी अधिक) मूर्ख, क्योंकि न केवल समस्या को हल करने के लिए उन्हें नहीं मिलता है, लेकिन समस्या यह समझने के लिए बेवकूफ है कि एक आसान है!

ऐसे गॉथस हैं जो पाइथन / डीजेगो से आने वाले लोगों को परेशान नहीं करते हैं, जो कुछ भी बदलते हैं तो तुरंत स्रोत को पुनः लोड करते हैं। Node.js के साथ, डिफ़ॉल्ट व्यवहार यह है कि यदि आप एक परिवर्तन करते हैं, तो पुराना संस्करण समय के अंत तक सक्रिय रहता है या जब तक कि आप मैन्युअल रूप से सर्वर को रोक और पुनरारंभ नहीं करते। यह अनुचित व्यवहार सिर्फ Pythonistas परेशान नहीं करता है; यह देशी Node.js उपयोगकर्ताओं को भी परेशान करता है जो विभिन्न कामकाज प्रदान करते हैं। स्टैक ओवरफ्लो प्रश्न "नोड.जेएस में फ़ाइलों का ऑटो-रीलोड" इस लेखन के समय 200 से अधिक अपवॉट्स और 1 9 उत्तरों में है; एक संपादन उपयोगकर्ता को http://tinyurl.com/reactjs-node-supervisor पर होमपेज के साथ, नानी स्क्रिप्ट, नोड-पर्यवेक्षक को निर्देशित करता है। यह समस्या नए उपयोगकर्ताओं को बेवकूफ महसूस करने का शानदार अवसर प्रदान करती है क्योंकि उन्होंने सोचा कि उन्होंने समस्या को ठीक किया है, लेकिन पुराना, छोटी गाड़ी का व्यवहार पूरी तरह अपरिवर्तित है। और सर्वर को उछालना भूलना आसान है; मैंने कई बार ऐसा किया है। और जो संदेश मैं देना चाहता हूं वह है, "नहीं, आप बेवकूफ नहीं हैं क्योंकि नोड.जेएस का यह व्यवहार आपकी पीठ को थोड़ा सा है; यह सिर्फ इतना है कि नोड.जेएस के डिजाइनरों ने यहां उचित व्यवहार प्रदान करने का कोई कारण नहीं देखा। इसके साथ सामना करने का प्रयास करें, शायद नोड-पर्यवेक्षक या किसी अन्य समाधान से थोड़ी सी मदद लेना, लेकिन कृपया यह महसूस न करें कि आप बेवकूफ हैं। आप समस्या के साथ एक नहीं हैं; समस्या Node.js के डिफ़ॉल्ट व्यवहार में है। "

कुछ खंडों के बाद, इस खंड को छोड़ दिया गया था, ठीक है क्योंकि मैं "यह आसान है" का एक प्रभाव नहीं देना चाहता हूं। मैंने काम करने के दौरान बार-बार अपने हाथों काट दिया, और मैं कठिनाइयों को सुगम बनाना नहीं चाहता हूं और आपको यह विश्वास करने के लिए तैयार किया गया है कि नोड.जेएस और इसके पारिस्थितिकी तंत्र को अच्छी तरह से काम करने के लिए एक सीधा मामला है और यदि यह आपके लिए भी सीधा नहीं है, तो आप नहीं जानते कि आप क्या कर रहे हैं। यदि आप Node.js का उपयोग करके अप्रिय कठिनाइयों में भाग नहीं लेते हैं, तो यह अद्भुत है। यदि आप करते हैं, तो मुझे उम्मीद है कि आप महसूस नहीं करेंगे, "मैं बेवकूफ हूं- मेरे साथ कुछ गड़बड़ होनी चाहिए।" अगर आप नोड.जे.एस. से निपटने में ग़लत आश्चर्य का अनुभव करते हैं तो आप बेवकूफ नहीं हैं। वो आप नहीं हैं! यह नोड.जेएस और इसके पारिस्थितिकी तंत्र है!

परिशिष्ट, जो कि मैं आखिरी अध्यायों और निष्कर्ष में बढ़ती हुई क्रांति के बाद वास्तव में नहीं चाहता था, पारिस्थितिक तंत्र में जो पाया गया था, उसके बारे में बात करता हूं, और मूर्खतापूर्ण शाब्दिकता के लिए एक कार्यवाही प्रदान करता है:

एक और डेटाबेस जो एकदम सही फिट जैसा प्रतीत होता है, और फिर भी रिडीम करने योग्य हो सकता है, एचटीएमएल 5 की-वैल्यू स्टोर का सर्वर-साइड कार्यान्वयन है। इस दृष्टिकोण में एपीआई का मुख्य लाभ है कि सबसे अच्छे फ्रंट एंड डेवलपर्स काफी अच्छी तरह से समझते हैं। उस मामले के लिए, यह भी एक एपीआई है कि सबसे अच्छा फ्रंट-एंड डेवलपर्स पर्याप्त रूप से पर्याप्त समझ में नहीं आता है। लेकिन नोड-लोकलस्टोरेज पैकेज के साथ, जबकि शब्दकोश-वाक्यविन्यास पहुंच की पेशकश नहीं की जाती है (आप स्थानीयStorage.setItem (कुंजी, मान) या localStorage.getItem (कुंजी) का उपयोग करना चाहते हैं, स्थानीय स्टोरेज [कुंजी] नहीं), पूर्ण स्थानीय स्टोरेज अर्थशास्त्र लागू किया जाता है , एक डिफ़ॉल्ट 5 एमबी कोटा सहित- क्यों? क्या सर्वर-साइड जावास्क्रिप्ट डेवलपर्स को खुद से संरक्षित करने की आवश्यकता है?

क्लाइंट-साइड डेटाबेस क्षमताओं के लिए, प्रति वेबसाइट 5 एमबी कोटा वास्तव में डेवलपर्स को इसके साथ काम करने के लिए सांस लेने का एक उदार और उपयोगी मात्रा है। आप बहुत कम कोटा सेट कर सकते हैं और अभी भी डेवलपर्स को कुकी प्रबंधन के साथ लम्बाई पर एक अचूक सुधार प्रदान करते हैं। एक 5 एमबी सीमा बिग डेटा क्लाइंट-साइड प्रसंस्करण के लिए खुद को बहुत जल्दी उधार नहीं देती है, लेकिन वास्तव में काफी उदार भत्ता है कि संसाधन डेवलपर्स बहुत कुछ करने के लिए उपयोग कर सकते हैं। लेकिन दूसरी तरफ, 5 एमबी हाल ही में किसी भी समय खरीदे गए अधिकांश डिस्क का विशेष रूप से बड़ा हिस्सा नहीं है, जिसका अर्थ है कि यदि आप और कोई वेबसाइट डिस्क स्पेस के उचित उपयोग के बारे में असहमत है, या कुछ साइट बस हॉगिश है, तो इसका वास्तव में लागत नहीं है आप बहुत अधिक हैं और जब तक आपकी हार्ड ड्राइव पहले से ही पूरी नहीं थी तब तक आपको एक दलदल हार्ड ड्राइव का कोई खतरा नहीं है। हो सकता है कि अगर संतुलन थोड़ा कम या थोड़ा अधिक था, तो हम बेहतर होंगे, लेकिन कुल मिलाकर यह क्लाइंट-साइड संदर्भ के लिए आंतरिक तनाव को संबोधित करने का एक सभ्य समाधान है।

हालांकि, यह धीरे-धीरे इंगित किया जा सकता है कि जब आप अपने सर्वर के लिए एक लेखन कोड हैं, तो आपको अपने डेटाबेस को सहनशील 5 एमबी आकार से अधिक बनाने से अतिरिक्त सुरक्षा की आवश्यकता नहीं है। अधिकांश डेवलपर्स को न तो नानी के रूप में कार्य करने वाले उपकरणों की आवश्यकता होगी और न ही उन्हें 5 एमबी से अधिक सर्वर-साइड डेटा संग्रहित करने से बचाने की आवश्यकता होगी। और क्लाइंट-साइड पर सुनहरा संतुलन अधिनियम 5 एमबी कोटा एक नोड.जेएस सर्वर पर थोड़ा मूर्खतापूर्ण है। (और, इस परिशिष्ट में शामिल कई उपयोगकर्ताओं के लिए डेटाबेस के लिए, यह थोड़ा दर्दनाक रूप से इंगित किया जा सकता है कि यह 5 एमबी प्रति उपयोगकर्ता खाता नहीं है जब तक कि आप प्रत्येक उपयोगकर्ता खाते के लिए डिस्क पर एक अलग डेटाबेस नहीं बनाते; यह 5 एमबी के बीच साझा किया गया है सभी उपयोगकर्ता एक साथ खाते हैं। अगर आप वायरल जाते हैं तो यह दर्दनाक हो सकता है!) दस्तावेज बताता है कि कोटा अनुकूलन योग्य है, लेकिन डेवलपर को एक हफ्ते पहले एक ईमेल भेजा गया था कि कोटा को बदलने का तरीका अनुत्तरित है, जैसा कि स्टैक ओवरफ्लो प्रश्न पूछ रहा था । एकमात्र उत्तर जो मैंने पाया है वह गिथब कॉफीस्क्रिप्ट स्रोत में है, जहां इसे एक कन्स्ट्रक्टर के लिए वैकल्पिक दूसरे पूर्णांक तर्क के रूप में सूचीबद्ध किया गया है। तो यह काफी आसान है, और आप एक डिस्क या विभाजन आकार के बराबर कोटा निर्दिष्ट कर सकते हैं।लेकिन एक ऐसी विशेषता को पोर्ट करने के अलावा जो समझ में नहीं आता है, टूल का लेखक एक चर या फ़ंक्शन के लिए "असीमित" अर्थ के रूप में 0 को समझने के एक बहुत ही मानक सम्मेलन का पालन करने में विफल रहा है, जहां एक पूर्णांक कुछ संसाधन उपयोग के लिए अधिकतम सीमा निर्दिष्ट करना है। इस गलतफहमी के साथ सबसे अच्छी बात यह है कि कोटा निर्दिष्ट करना है कि कोटा अनंत है:

if (typeof localStorage === 'undefined' || localStorage === null)
  {      
  var LocalStorage = require('node-localstorage').LocalStorage;
  localStorage = new LocalStorage(__dirname + '/localStorage',
    Infinity);
  }

क्रम में दो टिप्पणियां स्वैपिंग:

लोगों ने पूरी तरह से जावास्क्रिप्ट का उपयोग करके लगातार पैर में खुद को गोली मार दी, और जावास्क्रिप्ट का एक सम्मानजनक भाषा बनने का एक हिस्सा डगलस क्रॉकफोर्ड था, जिसका अर्थ है, "एक भाषा के रूप में जावास्क्रिप्ट में कुछ वाकई अच्छे हिस्से हैं और कुछ वाकई खराब हिस्से हैं। यहां अच्छे भाग हैं। बस भूल जाओ कि कुछ और है। "शायद गर्म नोड.जेएस पारिस्थितिकी तंत्र अपने " डगलस क्रॉकफोर्ड " को विकसित करेगा , जो कहेंगे," नोड.जेएस पारिस्थितिकी तंत्र एक जंगली पश्चिम कोडिंग है, लेकिन कुछ वास्तविक रत्न पाए जाते हैं । यहां एक रोडमैप है। लगभग किसी भी कीमत से बचने के लिए क्षेत्र यहां दिए गए हैं। यहां किसी भी भाषा या पर्यावरण में पाए जाने वाले कुछ सबसे अमीर पेडर्ट वाले क्षेत्र हैं। "

शायद कोई और उन शब्दों को एक चुनौती के रूप में ले सकता है, और क्रॉकफोर्ड के नेतृत्व का पालन करता है और नोड.जेएस और इसके पारिस्थितिक तंत्र के लिए "अच्छे हिस्से" और / या "बेहतर भागों" लिखता है। मैं एक प्रति खरीदना चाहता हूँ!

और इस परियोजना के समय किए गए अपरिपक्व पारिस्थितिक तंत्र के बारे में किसी भी टिप्पणी को तेजी से गुस्सा करने के लिए, सभी परियोजनाओं पर उत्साह और उत्साही कार्य-घंटे की डिग्री दी गई है, इसे एक वर्ष, या दो या तीन में वारंट किया जा सकता है। यह वास्तव में कहने के लिए पांच साल में समझ में आ सकता है, "2015 नोड.जेएस पारिस्थितिकी तंत्र में कई खनन क्षेत्र थे। 2020 नोड.जेएस पारिस्थितिकी तंत्र में कई पैराडाइज हैं। "





javascript new-operator