对象是一个容器,封装了属性和方法。
属性是对象的状态,方法是对象的行为。比如,我们把动物抽象为animal对象,动物的身高、体重等等,就是动物的「属性」,奔跑、飞翔、觅食等等,就是动物的「方法」。
- 构造函数
构造函数就是对象的模板。它专门用于生成实例对象的函数,一个构造函数可以生成多个实例对象。
var Animal = function() {
this.height = 100;
this.eat = function() {
console.log("eat!!!!");
}
};
构造函数的特点有两个:
(1) 函数体内必须使用「this」关键字,代表了所要生成的实例对象。
(2) 生成实例对象的时候,必须使用「new」。
- 基本用法
var dog = new Animal();
dog.height; // 100
一般使用new 构造函数来创建一个实例对象,那如果声明的时候没有加new呢?
var dog = Animal();
dog; // undefined
height; // 100
此时构造函数Animal里面的this指向了顶层对象(window),所以直接输出height是100。
- new命令的基本原理
使用「new」命令时,会按以下步骤执行:
(1)创建一个空对象,作为将要返回的对象实例。
(2)将这个空对象的原型,指向构造函数的「prototype」属性。
(3)将这个空对象赋值给构造函数内的「this」关键字。
(4)开始执行构造函数内的代码。
如果构造函数有「return」语句,而且「return」语句后面还跟着一个对象,那么「new」后会返回「return」语句后的对象。否则,就不会例会「return」语句,直接返回「this」对象。
var Animal = function() {
this.height = 100;
this.eat = function() {
console.log("eat!!!!");
}
return 100;
};
(new Animal() === 100); // false
var Animal = function() {
this.height = 100;
this.eat = function() {
console.log("eat!!!!");
}
return {width: 100};
};
(new Animal()).width; // 100
上面代码构造函数return了一个新对象,则会返回这个对象,不会返回this对象。