Tại sao hai triển khai này hoạt động khác nhau? Chính xác những gì họ đặt ra khi nói đến việc đánh giá nguyên mẫu của họ?Tại sao Object.create() và đối tượng mới() đánh giá các nguyên mẫu khác nhau?
Tạo một đối tượng với nguyên mẫu quy định:
function Foo() {}
// creates an object with a specified prototype
var bar = Object.create(Foo);
console.log(Object.getPrototypeOf(bar)); // returns: function Foo(){}
console.log(Foo.isPrototypeOf(bar)); // returns: true
Tạo một đối tượng với phương thức khởi tạo:
function Foo() {}
// creates an object with the constructor method
var bar = new Foo();
console.log(Object.getPrototypeOf(bar)); // returns: Foo {}
console.log(Foo.isPrototypeOf(bar)); // returns: false
Ngoài ra, tại sao việc thực hiện thứ hai trả lại cả hai Foo {}
và false
?
"Ngoài ra, tại sao triển khai thứ hai trả về cả Foo {} và sai?" là một câu hỏi hay. Tôi đã cập nhật câu trả lời của mình để giải quyết nó. – joews
Lưu ý rằng bạn thường làm 'var bar = Object.create (Foo.prototype);', cho bạn biết hành vi mong đợi. – Paulpro
duplicatet có thể có của [Hiểu sự khác biệt giữa 'Object.create()' và 'new SomeFunction()'] (http://stackoverflow.com/q/4166616/1048572) – Bergi