Create Object (tạo đối tượng) có 2 cách
Object literals
//đối tượng có 1 thuộc tính và 1 phương thức (method)
var myCar = {
brand: 'Toyota',
run: function(){
console.log('running');
}
};
Object constructor
//Tạo 1 đối tượng mới
var myApple = new Object();
//Thêm các thuộc tính cho đối tượng
myApple.color = ‘red’;
myApple.shape = ’round’;
myApple.howSweet = function(){
console.log(‘I am sweet’);
};
Cách tạo hàng loạt các Object cùng loại/kiểu có cùng thuộc tính và phương thức như nhau:
Sử dụng mẫu khởi tạo:
function Fruit (_color, _name){
this.color = _color;
this.name = _name;
this.showName = function(){
console.log(this.name);
}
};
Với hàm khởi tạo này, ta có thể tạo hàng loạt các đối tượng kiểu Fruit như sau:
var mangoFruit = new Fruit('yellow', 'Mango');
var appleFruit = new Fruit('red', 'Apple');
Sử dụng prototype
function Fruit (_color, _name){
};
Fruit.prototype.color = ‘general_color’;
Fruit.prototype.name = ‘general_name’;
Fruit.prototype.showName = function(){
console.log(this.name);
};
Với cách này thì ta cũng vẫn sẽ sử dụng hàm Fruit() để tạo ra các đối tượng object như cách ở trên:
var mangoFruit = new Fruit('yellow', 'Mango');
var appleFruit = new Fruit('red', 'Apple');
Function được coi là một Object, bản thân nó cũng có một property tên là prototype
một prototype cũng là một object
Prototype của Object (dùng __proto__)
Prototype của Function (dùng để thêm property & method & có tính thừa kế)
Muốn một đối tượng được kế thừa thuộc tính & phương thức của một hàm khởi tạo thì các thuộc tính & phương thức phải được thêm vào qua prototype của function khởi tạo
Muốn thêm 1 thuộc tính & phương thức, mà cho phép kế thừa thì phải thêm qua prototype
Existing object & object Contructor
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}