के बीच का अंतर मुझे लगता है कि अंतर मेरे सिर पर क्लिक किया गया है, लेकिन मैं बस यह सुनिश्चित करना चाहता हूं।जावास्क्रिप्ट में, 'ऑब्जेक्ट.क्रेट' और 'नया'
डगलस Crockford पेज Prototypal Inheritance in JavaScript पर, वे कहते हैं
एक मूलरूप प्रणाली में, वस्तुओं वस्तुओं से प्राप्त करती हैं। जावास्क्रिप्ट, हालांकि, उस ऑपरेटर की कमी है जो उस ऑपरेशन को निष्पादित करता है। इसके बजाए में एक नया ऑपरेटर है, जैसे कि नया एफ() एक नई वस्तु उत्पन्न करता है जो f.prototype से विरासत प्राप्त करता है।
मुझे वास्तव में समझ में नहीं आया कि वह उस वाक्य में क्या कहने की कोशिश कर रहा था इसलिए मैंने कुछ परीक्षण किए। ऐसा लगता है कि मुख्य अंतर यह है कि यदि मैं शुद्ध प्रोटोटाइप सिस्टम में किसी अन्य ऑब्जेक्ट के आधार पर ऑब्जेक्ट बनाता हूं, तो सभी मूल अभिभावक सदस्यों को नई वस्तु के प्रोटोटाइप पर होना चाहिए, न कि नई ऑब्जेक्ट पर।
var Person = function(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.toString = function(){return this.name + ', ' + this.age};
// The old way...
var jim = new Person("Jim",13);
for (n in jim) {
if (jim.hasOwnProperty(n)) {
console.log(n);
}
}
// This will output 'name' and 'age'.
// The pure way...
var tim = Object.create(new Person("Tim",14));
for (n in tim) {
if (tim.hasOwnProperty(n)) {
console.log(n);
}
}
// This will output nothing because all the members belong to the prototype.
// If I remove the hasOwnProperty check then 'name' and 'age' will be output.
मेरी समझ सही है कि अंतर केवल स्पष्ट हो जाता है जब वस्तु पर ही सदस्यों के लिए परीक्षण:
यहाँ परीक्षण है?
देखें http://stackoverflow.com/questions/4166616/understanding-the-difference-between-object-create-and-new-somefunction-in-j –
मैंने कल उस प्रश्न को देखा था, मुझे लगता है, लेकिन जवाब मुझे स्पष्ट नहीं था। अब मैंने अपने परीक्षण किए हैं और मेरा प्रश्न टाइप किया है, यह स्पष्ट है! – Jules