Cho đến nay, nếu bạn muốn tạo một đối tượng, bạn có thể chỉ sử dụng các chữ:
var obj = {};
hoặc Object
constructor.
var obj = Object();
Nhưng không ai trong số những phương pháp này cho phép bạn xác định nguyên mẫu của đối tượng được tạo ra.
Đây là những gì bạn có thể làm với Object.create
ngay bây giờ. Nó cho phép bạn tạo một đối tượng mới và đặt đối số đầu tiên làm nguyên mẫu của đối tượng mới. Ngoài ra, nó cho phép bạn thiết lập các thuộc tính của đối tượng mới được cung cấp làm đối số thứ hai.
Nó tương tự như làm một cái gì đó như thế này (không có đối số thứ hai):
function create(proto) {
var Constr = function(){};
Constr.prototype = proto;
return new Constr();
}
Vì vậy, nếu bạn đang sử dụng một cấu trúc tương tự như sau, khi này bạn muốn sử dụng Object.create
.
Nó không thay thế cho new
. Nó là một bổ sung để làm cho việc tạo ra các đối tượng duy nhất mà nên kế thừa từ một đối tượng đơn giản hơn.
Ví dụ:
tôi có một đối tượng a
:
var a = {
someFunction: function() {}
};
và tôi muốn b
để mở rộng đối tượng này. Sau đó, bạn có thể sử dụng Object.create
:
b = Object.create(a);
b.someOtherFunction = function(){};
Bất cứ khi nào bạn có một hàm constructor, nhưng bạn chỉ nhanh chóng một đối tượng từ nó, bạn có thể có thể thay thế này với Object.create
.
Có quy tắc chung áp dụng. Nó phụ thuộc rất nhiều vào chức năng của hàm tạo và cách bạn kế thừa từ các đối tượng khác, v.v.
Nguồn
2011-07-07 15:46:01
Xem câu trả lời cho câu hỏi này: http://stackoverflow.com/questions/4166616/understanding-the-difference-between- object-create-and-new-somefunction-in-ja –
Xem điều này cũng như với tất cả các câu trả lời mới, http://stackoverflow.com/questions/387707/whats-the-best-way-to-define-a-class -in-javascript –