Tôi nghĩ rằng sự khác biệt đã được nhấp vào trong đầu của tôi, nhưng tôi chỉ muốn chắc chắn.Trong Javascript, sự khác biệt giữa 'Object.create' và 'new'
Trên Douglas Crockford trang Prototypal Inheritance in JavaScript, ông nói
Trong một hệ thống nguyên chủng, các đối tượng kế thừa từ đối tượng. Tuy nhiên, JavaScript, thiếu một toán tử thực hiện thao tác đó. Thay vào đó, có toán tử mới, chẳng hạn f() mới tạo ra một đối tượng mới mà kế thừa từ f.prototype.
Tôi không thực sự hiểu những gì anh ấy đang cố gắng nói trong câu đó vì vậy tôi đã thực hiện một số thử nghiệm. Dường như với tôi rằng sự khác biệt chính là nếu tôi tạo một đối tượng dựa trên một đối tượng khác trong một hệ thống nguyên mẫu thuần túy, thì tất cả các thành viên cha mẹ phải ở trên nguyên mẫu của đối tượng mới, chứ không phải trên chính đối tượng mới.
Dưới đây là các bài kiểm tra:
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.
là hiểu biết của tôi đúng khi cho rằng sự khác biệt duy trở nên rõ ràng khi thử nghiệm cho các thành viên trên các đối tượng riêng của mình?
xem http://stackoverflow.com/questions/4166616/understanding-the-difference-between-object-create-and-new-somefunction-in-j –
Tôi đã thấy câu hỏi đó ngày hôm qua, tôi nghĩ, nhưng câu trả lời không rõ ràng với tôi. Bây giờ tôi đã thực hiện các bài kiểm tra của mình và gõ câu hỏi của tôi, nó là rõ ràng! – Jules