Tôi đang cố gắng để có các thuộc tính kế thừa từ cha mẹ, nhưng tôi không rõ ràng về cách thực hiện đúng.Thừa kế nguyên mẫu trong JS và cách nhận các thuộc tính cha mẹ
phép nói rằng tôi có:
var Animal = function(name){
this.offspring = [];
this.name = name;
return this;
}
Animal.prototype.createOffspring = function(name){
name = name || 'Baby '+(this.offspring.length+1);
this.offspring.push(name);
return this;
}
Bây giờ tôi muốn thêm một nguyên mẫu kế thừa phụ vì vậy tôi không cần phải tự thêm tất cả mọi thứ từ cha mẹ. Ví dụ, cho phép nói rằng tôi muốn thêm một Cat
dựa từ Animal
Tôi muốn làm điều này, như thể nó là một Animal
var pet = new Cat('Kitty');
pet.createOffspring();
Nếu không bằng tay phải thêm name
và createOffspring
đến Cát constructor
thực sự chỉ là một Animal
, nhưng với một số chức năng bổ sung khác (như .meow()
hoặc một cái gì đó).
Tôi cần kiểm tra nó, nhưng tôi muốn _not_ phải làm lại 'this.name' vì _all_ động vật sẽ có tên do đó,' this.name = 'A cat'; 'sẽ có thể bị xóa và 'cat.name' phải trả về' Một con vật ' –
Ồ, xin lỗi. Tôi đánh lừa bạn nhầm câu trả lời: Animal.prototype không được thiết lập, vì vậy 'cat.name' sẽ đưa ra một ngoại lệ. Đúng cách, khi dụ được xây dựng động lực, là gán một đối tượng cho một proto: 'Cat.prototype = Object.create (new Animal())' –
Điều này đã cho tôi đi đúng hướng và cảm ơn bạn rất nhiều. Xin lỗi đã mất quá lâu :) Điều duy nhất dường như lạ là 'Cat.prototype.constructor = Cat;' trong hay không trong mã hoạt động giống nhau và tôi vẫn nhận được 'true' trên' instanceof' S. Dòng 'Object.create()' làm cho 'cat.name' không xác định. http://jsbin.com/uhogig/edit#javascript,html –