(2)构造函数方式
    function Car(sColor, iDoors) {
        this.color = sColor;
        this.doors = iDoors;
        this.showColor = function() {
            alert(this.color);
        };
    }
    var oCar1 = new Car("red", 4);
    var oCar2 = new Car("blue", 3);
通常构造函数的首字母要大写。
就想工厂函数一样,构造函数也会同样重复生成函数,为每个对象创建独立的函数版本。
(3)原型方式
    function Car() {
    }
    Car.prototype.color = "red";
    Car.prototype.doors = 4;
    Car.prototype.showColor = function() {
        alert(this.color);
    };
    var oCar1 = new Car();
    var oCar2 = new Car();
缺点:
原型方式的构造函数没有参数。他不能通过传参来初始化属性的值。还有,当属性指向的是对象时,还会造成对象共享。如下:
    function Car() {
    }
    Car.prototype.color = "red";
    Car.prototype.doors = 4;
    Car.prototype.drivers = new Array("Mike", "Sue");
    Car.prototype.showColor = function() {
        alert(this.color);
    };
    var oCar1 = new Car();
    var oCar2 = new Car();
    oCar1.drivers.push("Matt");
    alert(oCar1.drivers);   //output "Mike,Sue,Matt"
    alert(oCar2.drivers);   //output "Mike,Sue,Matt"
. 
分页: [1] [2] [3] 
TAG:



