Tôi quen thuộc với ngôn ngữ OOP được gõ mạnh mẽ như C# và Java, vì vậy tôi hơi bối rối với Javascript. Tôi muốn class
tôi để được đóng gói, ví dụ:Khai báo getter/setter trong lớp kế thừa trong Javascript
function Human() {
var _name = '';
var _nameChangeCounter = 0;
}
Human.constructor = Human;
Human.prototype = Object.create(Animal);
Như bạn thấy, Human
mở rộng lớp Animal
. Bây giờ tôi cần một getter và setter cho Name
, và một getter cho NameChangeCounter
. Trong setter của Name
, nó sẽ tăng NameChangeCounter
. Tôi nhìn lên như thế nào để làm cho getter và setter trong Javascript trong this question:
Name.prototype = {
get fullName() {
return this.first + " " + this.last;
},
set fullName(name) {
var names = name.split(" ");
this.first = names[0];
this.last = names[1];
}
};
Tuy nhiên, bây giờ nguyên mẫu được thực hiện cho các thừa kế, làm thế nào tôi có thể làm điều đó? Tôi có phải thực hiện kiểu Java (tạo các hàm getName
, setName
, getNameChangeCounter
) không? Các thuộc tính như window.location.href
được triển khai như thế nào?
* cửa sổ * là một đối tượng lưu trữ, nó được thiết lập tuy nhiên thực hiện mong muốn thiết lập nó. Nó không nhất thiết phải (hoặc thậm chí có thể) thiết lập bằng cách sử dụng một hàm tạo. Nó tương tự như các đối tượng dựng sẵn như * Math * hoặc * Date * mà chỉ * là *. – RobG
Bạn có thể xem [tài liệu hướng dẫn về các lớp và di sản của Mozilla JS] (https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Contributor_s_Guide/Classes_and_Inheritance) và tại cuốn sách miễn phí [ Eloquent JavaScript] (http://eloquentjavascript.net/). Tôi thấy chúng rất thông tin và hữu ích. – pasty
Đừng làm lộn xộn DOM với JS ... chúng là những thứ khác nhau ... DOM có rất nhiều "mã gốc". – rafaelcastrocouto