Tôi vừa có Javascript: Các bộ phận tốt của Douglas Crockford và tôi đang gặp một số khó khăn trong việc hiểu một trong những ví dụ của ông về nguyên mẫu. Mã trong sách đọc như sau:nhầm lẫn về tập thể dục javascript
if (typeof Object.create !== "function") {
Object.create = function(o) {
var F = function() {}
F.prototype = o;
return new F;
};
}
Tôi giả định rằng mã này được sử dụng để nhắm mục tiêu mẫu thử của hàm. Nhưng tại sao lại sử dụng một cách tiếp cận phức tạp như vậy? Tại sao không chỉ sử dụng variable
.prototype? Crockford là chuyên gia hàng đầu về Javascript vì vậy tôi chắc chắn có một lý do chính đáng để sử dụng mô hình này. Bất cứ ai có thể giúp tôi hiểu nó tốt hơn? Bất kỳ trợ giúp sẽ được đánh giá cao.
@ CMS - nhưng trong trường hợp này, 'Object.create' được đặt thành một hàm trống. Vì vậy, không có thừa kế ở đây ... phải không? Ngoài ra, vì 'Object.create' là một phương thức của hàm tạo' Object', việc thiết lập nó bằng một hàm rỗng sẽ là 'null' đúng không? – dopatraman
@codeninja, tôi không hiểu tại sao bạn nói 'Object.create' là * đặt * thành một hàm * trống *, có thể là do dòng cuối cùng (' return new F; ') ??? Dòng cuối cùng đó trả về một đối tượng mới gọi hàm tạo 'F' (một đối tượng kế thừa từ' F.prototype'), nó có thể trông không quen thuộc vì các dấu ngoặc đơn bị thiếu ở cuối, nhưng chúng là tùy chọn khi bạn sử dụng 'new' 'toán tử (' new F(); 'tương đương với' new F; ') ... – CMS
@ CMS - Mã đọc' Object.create = var F' được đặt '=' thành 'function() { } '. không có nghĩa là nó có ý nghĩa nào đó được đặt thành một hàm trống không? – dopatraman