several way to create object in javascript

 //factory model:
    function createPerson(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function () { alert(this.name); };
        return o;
    }

    //constructor model:
    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayName = function () { alert(this.name); };
    }

    //prototype model
    function Person() { }
    Person.prototype.name = "roy";
    Person.prototype.age = 29;
    Person.prototype.job = "software engineer";
    Person.prototype.sayName = function () { alert(this.name); };

    //mix constructor model and prototype model
    function Person(name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        this.friends = ["roy","angel"];
    }
    Person.prototype = {
        constructor: Person,
        sayName: function () { alert(this.name); }
    }

    //dynamically prototype model
    function Person(name, age, job) {
        //properties
        this.name = name;
        this.age = age;
        this.job = job;

        //methods
        if (typeof this.sayName != "function") {
            Person.prototype.sayName = function () { alert(this.name); };
        }
    }

    //parasitic constructor model
    function Person(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function () { alert(this.name); };
        return o;
    }

    //durable object
    function Person(name, age, job) {
        //create return object
        var o = new Object();

        //define private variable and method
        var xx;
        var yy;

        //add method
        o.sayName = function () { alert(name); };

        //return object
        return o;
    }
原文地址:https://www.cnblogs.com/ongoing/p/3078797.html