Không hẳn vậy.
Tùy thuộc vào những gì bạn thực sự cần, một khả năng có thể được đặt olàm nguyên mẫu của một đối tượng mới.
var o = {};
(function(x){
var obj = Object.create( x );
obj.foo = 'foo';
obj.bar = 'bar';
})(o);
alert( o.foo ); // undefined
Vì vậy, bất kỳ thuộc tính nào bạn thêm vào objsẽ không được thêm vào o. Bất kỳ thuộc tính nào được thêm vào objcó cùng tên thuộc tính với thuộc tính trong osẽ làm mờ thuộc otính đó.
Tất nhiên, bất kỳ thuộc tính nào được thêm vào osẽ có sẵn objnếu chúng không bị che khuất và tất cả các đối tượng có otrong chuỗi nguyên mẫu sẽ thấy các bản cập nhật tương tự o.
Ngoài ra, nếu objcó thuộc tính tham chiếu đến một đối tượng khác, chẳng hạn như Mảng, bạn cần phải đảm bảo phủ bóng đối tượng đó trước khi thêm các thành viên vào đối tượng, nếu không, các thành viên đó sẽ được thêm vào objvà sẽ được chia sẻ giữa tất cả các đối tượng có objtrong chuỗi nguyên mẫu.
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // 'new_value'
Ở đây bạn có thể thấy rằng vì bạn không shadow Array ở baztrên ovới một baztài sản trên obj, các o.bazmảng được sửa đổi.
Vì vậy, thay vào đó, bạn cần làm bóng nó trước:
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz = [];
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // undefined