• 面向对象
      • 对象
      • 实例
      • 基本能力
        • 封装 - 把相关的信息(无论数据或方法)存储在对象中的能力
        • 聚集 - 把一个对象存储在另一个对象内的能力
        • 继承 - 由另一个类(或多个类)得来类的属性和方法的能力
        • 多态 - 编写能以多种方法运行的函数或方法的能力
      • 构成
        • 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();

    1. - 构造函数
    2. ```swift
    3. function Car(sColor,iDoors,iMpg) {
    4. this.color = sColor;
    5. this.doors = iDoors;
    6. this.mpg = iMpg;
    7. this.showColor = function() {
    8. alert(this.color);
    9. };
    10. }
    11. var oCar1 = new Car("red",4,23);
    12. 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
        • 可以添加已有对象的属性和方法
      • 重命名已有方法
      • 重定义已有方法