Tạo các đối tợng mớ
5.1.2. Sử dụng một hàm xây dựng(Constructor Function)
Bạn có thể tạo ra đối tợng của riêng mình với hai bớc sau:
1. Định nghĩa kiểu của đối tợng bằng cách viết một hàm xây dựng. 2. Tạo ra một cá thể của đối tợng đó bằng toán tử new
Để định nghĩa một kiểu đối tợng, ta phải tạo ra một hàm để chỉ định rõ tên, các thuộc tính và các cách thức của kiểu đối tợng đó. Ví dụ giả sử bạn muốn tạo một kiểu đối tợng ô tô với tên là car, có các thuộc tính make, model, year và color, để thực hiện việc này có thể viết một hàm nh sau:
function car(make, model, year ){ this.make = make
this.model = model this.year = year }
Chú ý việc sử dụng toán tử this để gán giá trị cho các thuộc tính của đối tợng phải thông qua các tham số của hàm.
Ví dụ, bạn có thể tạo một đối tợng mới kiểu car nh sau:
mycar = new car(“Eagle”,”Talon TSi”,1993)
Câu lệnh này sẽ tạo ra đối tợng mycar và liên kết các giá trị đợc đa vào với các thuộc tính. Khi đó giá trị của mycar.make là “Eagle”, giá trị của mycar.model là “Talon TSi”, và mycar.year là một số nguyên 1993....Cứ nh vậy bạn có thể tạo ra nhiều đối tợng kiểu car.
Một đối tợng cũng có thể có những thuộc tính mà bản thân nó cũng là một đối t- ợng. Ví dụ bạn định nghĩa thêm một đối tợng khác là person nh sau:
function person(name, age, sex){ this.name=name
this.age=age this.sex=sex }
Và sau đó ta tạo ra hai ngời mới:
rank = new person(“Rank McKinnon”,33,”M”) ken = new person(“Ken John”,39,”M”)
Bây giờ bạn định nghĩa lại hàm xây dựng car nh sau:
function car(make, model, year,owner ){ this.make = make
this.model = model this.year = year this.owner = owner }
Nh vậy bạn có thể tạo đối tợng kiểu car mới:
car1 = new car(“Eagle”,”Talon TSi”,1993,rank) car2 = new car(“Nissan”,”300ZX”,1992,ken)
Nh vậy, thay vì phải qua một xâu ký tự hay một giá trị số khi tạo đối tợng, ta chỉ cần đa hai đối tợng đã đợc tạo ở câu lệnh trên vào dòng tham số của đối tợng mới tạo. Ta cũng có thể lấy đợc thuộc tính của đối tợng owner bằng câu lênh sau:
car2.owner.name
Chú ý rằng bạn cũng có thể tạo ra một thuộc tính mới cho đối tợng trớc khi định nghĩa nó, ví dụ:
car1.color=”black”
Nh vậy, thuộc tính color của đối tợng car1 đợc gán là “black”. Tuy nhiên, nó sẽ không gây tác động tới bất kỳ một đối tợng kiểu car nào khác. Nếu muốn thêm thuộc tính cho tất cả các đối tợng thì phải định nghĩa lại hàm xây dựng đối tợng.