JS几种创建对象的方法

    //1.工厂模式
    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;
    }
    var person = person("zhangsan","23","web");

    //2.构造函数模式
    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayName = function(){
            alert(this.name);
        }
    }

    var person1 = new Person("dy",23,"web");

    //3.原型模式
    function Person(){
        
    }
        Person.prototype.name = "zhangsan";
        Person.prototype.age = 29;
        Person.prototype.job = "web";
        Person.prototype.sayName = function(){
            alert(this.name);
        }


    //4.组合使用构造函数模式与原型模式
    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
    }
    Person.prototype = {
        constructor:Person,
        sayName:function(){
            alert(this.name);
        }
    }


    //动态原型模式
    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        if (typeof this.sayName != "function") {
            Person.prototype.sayName = function(){
                alert(this.name)
            }
        }
    }

    //寄生构造函数模式
    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;
    }
    var  friend = new Person("nicholas",29,"web");
    friend.sayName();


    //稳妥构造函数模式
    //在这种模式创建的对象中,除了使用sayName()方法之外,没有其他办法访问name的值
    function Person(name,age,job){
        var o = new Object();
        o.sayName = function(){
            alert(name)
        }
        return o;
    }
    var friend = Person("nicholas",29,"web");
    friend.sayName()

猜你喜欢

转载自blog.csdn.net/weixin_41658426/article/details/80773014