I 3J avaScript sam plecode M tciosofl nternet Explorer HË 3]
2000 Ferrari jp'355 F I= Fc iran Red
Phương thức tạo các đối tượng nàv sẽ làĩTí việc trong Jav aS crip t sử dụng tấc cả trìn h duyệt cĩ từ In tern et E xplorer 3.0 và N etscape N aviga to r 3.0.
C á c fên ihuộc línli nhợq logi chữ fpong JavaScđpf. Thuộc fink mijCar.colop kkơnq qiốnq nhu mi^Car.Colop.
Sử đụng một trực kiện đơi tượng
Trực kiện đối tượng JavaScript là một cách tiệ n lợi để tạo m ột đối tượng m à khơng cần phải định nghĩa sẵn m ột h àm constructor. Thực tế, nĩ là m ột constructor khơng được đ ặt tên. M ột tro n g những điểm m ạn h lớn n h ấ t của JavaScript là nĩ cho phép các n h à lập trìn h tạo
132 Chương 5: Tạo các class JavaScript riêng của bạn
nh an h các chương trìn h và trực kiện đối tượng là m ột ví dụ chính về cách nĩ làm điều nàỵ Sự hịa hợp của việc tạo n h a n h các đối tượng sử dụng trực kiện đơi tượng là bạn cĩ th ể m ấ t đi k h ả n àn g tá i sử dụng mã cho những đối tượng khác hoặc những chương trìn h khác.
Trực kiện đối tượng gồm m ột số cặp thuộc tín h - giá trị được đ ặt trong m ột cặp dấu ngoặc cong. Các dấu h ai chấm tách b iệt những thuộc tín h và giá trị và các dấu phẩy tách b iệt các cặp thuộc tín h - giá trị.
{ propertyl : value, property2 : value , ... , propertyN : value }
Chúng ta cĩ th ể viết cùng m ột đối tượng mySƯV m à chúng ta đã tạo trong p h ần vừa rồi sử dụng m ột trực kiện đối tượng như sau:
var mySiJV = {Make:”Toyota”, Model:”4Runner SR5", Year:2001,
Color:’'Thundercloud”};
Chúng ta sẽ sử dụng m ột chút thủ th u ậ t để định n g h ĩa thuộc tín h FullN am e sử dụng m ột trực kiện đối tượng. Bên tro n g chính trực kiện đối tượng, chúng ta khơng th ể tham chiếu đến b ấ t kỳ thuộc tín h khác. Mã sau đây cho th ấ y chúng ta buộc phải định ng h ĩa FullN am e bằng tay như th ế nào:
var mySUV = {Make:”Toyota", Model:”4Runner SR5“, Year:2001,
Color:”Thunderclouớ”.
FuilName: '200 i ìoyota ¿»Runner SR5'};
Khi nĩi về việc định nghĩa h ai đối tượng k h ác từ p h ần vừa rồi (m ySportsC ar và m yD ream Car), cách duy n h ấ t để tái sử dụng m ã từ đối tượng mySUV là sao chép và dán, m à hầu h ế t người ta đồng ý là khơng phải là cách tố t n h ấ t để tá i sử dụng mã.
var mySportsCar = {Make:"Acura”, Model:” NSX-T”,
Year: 1999, Color:”Red”,
FullName:”1999 Acura NSX-T”}; var myDreamCar = {Make:” Ferrari” ,
Model:”F355 F T , Year:2000,
Color:”Ferrari Red",
Chương 5: Tạo các class JavaScript riêng của bạn 133
N hư bạn cĩ th ể thấy, các trực: kiện đỏi tượng được sử dụng tố t n h ất khi bạn khơng dự tín h cần tạo cac đối tượng khác cùng kiểụ
Mở rộng một class hiện cĩ
Jav aS crip t cho phép bạn mỏ' rộng những khả n ăn g của m ột class bằng việc gán những phương thức và thuộc tính riên g của bạn cho nĩ. Điều nàv hao gồm th£rr> r h 'ir g nhương thức và thuộc tín h mĩi '•ào b ấ t kj' class hệ thống định nghĩa sẵn. rhực hiện điều này qua m ột hệ thống được gọi là tạo nguyên mẫu (prototyping).
Jav a S c rip t tự động cho mỗi class m ột thuộc tín h được gọi là prototype (nguyên mẫu) m à cĩ th ể được sử dụng để mở rộng chức năng tại cấp class.
ClassNamẹprototypẹmemberl = vaỉuel ;
Một th à n h viên mới (m em berl) cĩ th ể được gán m ột giá trị mặc định (valuel) và được th êm vào class được xác định (ClassNam e). T h àn h viên mđi nay thì static (tĩnh), trong đĩ giá trị của nĩ được chia sẻ bởi tá t eả đĩi -ƯỢr,g được dẫn xuất trong class đĩ. Thay đổi giá trị bên tro n g một
ỉếi tơt-n * 3ê th a y ầc i lĩ C'.1C' tấ t Ch.
Hãy b ắ t đầu với m ột ví dụ. Trong m ã sau đây chúng ta đã định nghĩa m ột hàm chấp n h ận m ột đối tượng Date là tham số của nĩ và sẽ trả về m ột chuỗi tượng trưng cho tên của mùa ("Spring", "Summer", "Fall", hoặc "W.in^er"; m à n^áy th á rg thuộc Ví .
lupction gtìtSeason íobj) I 'a: rr.oi: - ĩij.jeiVI /n^í;; var day = obị.getDavO;
i; 'mon < 2 ¡1 'mon ¿ĩ. 2 Ẵồ. Ü3V ■: ?U)) 1
rfìturn “Winter
} else it (mon b || ^rnon -:= 5 Ẳ& ờay < 21)) {
return "Spring":
) else if (mcn < 8 II (mon -= 8 && day < 23)) 1 return “Summer"; return “Summer";
} else if (mon < 11 iỉ (mon ==11 && day < 22)) { return “ FaJr;
} else {
return “Winter”;
} }