- 面向对象
- 对象
- 类
- 实例
- 基本能力
- 封装 - 把相关的信息(无论数据或方法)存储在对象中的能力
- 聚集 - 把一个对象存储在另一个对象内的能力
- 继承 - 由另一个类(或多个类)得来类的属性和方法的能力
- 多态 - 编写能以多种方法运行的函数或方法的能力
- 构成
- attribute
- method
- property
- 对象应用
- 声明和实例化
- new
- 对象引用
- 对象废除
- 所有引用为null之后,释放对象
- 声明和实例化
- 对象类型
- 本地对象
- Object
- Function
- Array
- String
- Boolean
- Number
- Date
- RegExp
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
- 内置对象
- Global
- Math
- 宿主对象
- BOM
- DOM
- 本地对象
- 对象作用域
- 变量的适用范围
- 公用作用域
- 开发者确定了一个规约,说明哪些属性和方法应该被看做私有的
- 规定在属性前后加下划线
- 开发者确定了一个规约,说明哪些属性和方法应该被看做私有的
- this
- 关键字 this 总是指向调用该方法的对象
- 使用this的原因
- 因为在实例化对象时,总是不能确定开发者会使用什么样的变量名。使用 this,即可在任何多个地方重用同一个函数。
- 定义类或对象
- 工厂模式 ```swift function createCar() { var oTempCar = new Object; oTempCar.color = “blue”; oTempCar.doors = 4; oTempCar.mpg = 25; oTempCar.showColor = function() { alert(this.color); }; return oTempCar; }
var oCar1 = createCar(); var oCar2 = createCar();
- 构造函数
```swift
function Car(sColor,iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.showColor = function() {
alert(this.color);
};
}
var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);
- 原型方式
- 可以使用instanceof检查变量指向的对象的类型 ```swift function Car() { }
Car.prototype.color = “blue”; Car.prototype.doors = 4; Car.prototype.mpg = 25; Car.prototype.showColor = function() { alert(this.color); };
var oCar1 = new Car(); var oCar2 = new Car();
- 混合构造函数/原型方式
- 即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。
```swift
function Car(sColor,iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","John");
}
Car.prototype.showColor = function() {
alert(this.color);
};
var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);
oCar1.drivers.push("Bill");
alert(oCar1.drivers); //输出 "Mike,John,Bill"
alert(oCar2.drivers); //输出 "Mike,John"
动态原型方法
- 即在构造函数内定义非函数属性,而函数属性则利用原型属性定义。 ```swift class Car { public String color = “blue”; public int doors = 4; public int mpg = 25;
public Car(String color, int doors, int mpg) { this.color = color; this.doors = doors; this.mpg = mpg; }
public void showColor() { System.out.println(color); } } ```
混合工厂方式 ```swift function Car() { var oTempCar = new Object; oTempCar.color = “blue”; oTempCar.doors = 4; oTempCar.mpg = 25; oTempCar.showColor = function() { alert(this.color); };
return oTempCar; }
var car = new Car(); ```
- 修改对象
- prototype
- 可以添加已有对象的属性和方法
- 重命名已有方法
- 重定义已有方法
- prototype