আসলে তা না.
আপনার আসলে যা প্রয়োজন তার উপর নির্ভর করে একটি সম্ভাবনাo কোনও নতুন অবজেক্টের প্রোটোটাইপ হিসাবে সেট করা হতে পারে ।
var o = {};
(function(x){
var obj = Object.create( x );
obj.foo = 'foo';
obj.bar = 'bar';
})(o);
alert( o.foo );
সুতরাং আপনি যে কোনও সম্পত্তি যুক্ত objকরবেন তাতে যুক্ত হবে না o। কোনও objসম্পত্তি হিসাবে একই সম্পত্তি নামের সাথে যুক্ত কোনও সম্পত্তি সম্পত্তির oছায়া দেবে o।
অবশ্যই, যুক্ত হওয়া যে কোনও বৈশিষ্ট্য ছায়াযুক্ত না হলে এগুলি oপাওয়া যাবে objএবং oপ্রোটোটাইপ শৃঙ্খলে থাকা সমস্ত অবজেক্টগুলি একই আপডেট দেখতে পাবে o।
এছাড়াও, যদি objএমন কোনও সম্পত্তি রয়েছে যা অ্যারের মতো অন্য কোনও অবজেক্টের রেফারেন্স দেয় তবে আপনাকে অবশ্যই অবজেক্টটিতে সদস্যদের যোগ করার আগে সেই বস্তুটির ছায়া নিশ্চিত করতে হবে অন্যথায়, সেই সদস্যগুলিকে যুক্ত করা objহবে এবং সমস্ত বস্তুর মধ্যে ভাগ করা হবে যা আছে objপ্রোটোটাইপ চেন।
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] );
এখানে আপনি দেখতে পারেন কারণ আপনি এ অ্যারে ছায়া করা হয়নি bazউপর oএকটি সঙ্গে bazউপর সম্পত্তি obj, o.bazএরে পরিবর্তিত হয়।
সুতরাং পরিবর্তে, আপনাকে প্রথমে এটি ছায়া নেওয়ার দরকার ছিল:
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz = [];
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] );