sự khác biệt giữa 2 triển khai thừa kế nguyên chủng là gì, và xem xét rằng chúng tôi đang làm việc với 2 "nguyên mẫu" khác nhau (thuộc tính prototype mà chỉ về chức năng, và nguyên mẫu nội bộ), và làm thế nào để những hiện thực khác nhau về nguyên mẫu của họ tra cứu chuỗi? Ngoài ra, thực hiện đầu tiên (sử dụng thuộc tính mẫu thử nghiệm) có phụ thuộc vào việc sử dụng toán tử new
của chúng tôi không?Sự khác nhau giữa 2 triển khai thừa kế prototypal này là gì?
Gán tài sản prototype
một chức năng và sử dụng new
điều hành:
function foo() {}
foo.prototype.output = function(){
console.log('inherits from Function.prototype property');
};
bar = new foo();
bar.output();
Lưu trữ một hàm trong một đối tượng theo nghĩa đen và sử dụng Object.create()
phương pháp:
var foo = {
output: function(){
console.log('inherits from the internal prototype');
}
};
var bar = Object.create(foo);
bar.output();
Một khác biệt là 'Object.create' là mới hơn, và không được hỗ trợ trong IE8 và dưới – keune
Tôi không thấy nguyên chủng ** thừa kế ** trong ví dụ của bạn. – hindmost
@hindmost bạn có thể xây dựng được không? – shmuli