编程爱好者之家

JavaScript定义类的4种方法

2018-03-22 13:42:03 331

工厂方法

function creatPerson(name, age) {            
    var obj = new Object();

    obj.name = name;
    obj.age = age;

    obj.sayName = function() {        window.alert(this.name);
    };            
    return obj;
}

构造函数方法

function Person(name, age) {    this.name = name;    this.age = age;    this.sayName = function() {        window.alert(this.name);
    };
}

原型方法

function Person() {
        
}
        
Person.prototype = {    constructor : Person,    name : "Ning",    age : "23",    sayName : function() {        window.alert(this.name);
    }
};

大家可以看到这种方法有缺陷,类里属性的值都是在原型里给定的。

组合使用构造函数和原型方法(使用最广)

function Person(name, age) {    this.name = name;    this.age = age;
}
        
Person.prototype = {    constructor : Person, 
    sayName : function() {        window.alert(this.name);
    }
};

将构造函数方法和原型方法结合使用是目前最常用的定义类的方法。这种方法的好处是实现了属性定义和方法定义的分离。比如我可以创建两个对象person1person2,它们分别传入各自的name值和age值,但sayName()方法可以同时使用原型里定义的。

来源http://blog.csdn.net/lurr88/article/details/79640341

同类文章