美文网首页
创建对象模式

创建对象模式

作者: silvacheng | 来源:发表于2018-04-27 17:15 被阅读0次

    1.工厂模式

    这种模式抽象了创建具体对象的过程
    
    function createPerson () {
      var o = new Object();
      o.name = name;
      o.age = age;
      o.job = job;
      o.sayName = function () {
        alert(this.name)
      }
    }
    var person1 = createPerson('silva', 29, 'IT');
    

    2.构造函数模式

    function Person (name, age) {
        this.name = name;
        this.age = age;
        this.say = function () {
            console.log('hello');
        }
    }
    
    var p1 = new Person('silva', 26);
    var p2 = new Person('jimmy', 29);
    // 备注:  要创建Person的新的实例,必须使用new操作符。
    // 以这种方式调用构造函数实际上经历以下4个步骤:
    // 1.创建一个新的对象
    // 2.将构造函数的作用域赋值给新对象(因此this就指向了这个新对象)
    // 3.执行构造函数中的代码
    // 4.返回新的对象
    

    3.原型模式

    function Person () {}
    
    Person.prototype = {
        constructor: Person,
        name: 'silva',
        age: 29,
        sayName: function () {
            console.log(this.name);
        }
    }
    
    var person1 = new Person();
    person1.sayName();
    

    4.组合使用构造函数模式和原型模式

    构造函数模式用于定义实例属性,原型模式用于定义方法和共享属性
    
    function Person (name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }
    
    Person.prototype = {
        constructor: Person,
        sayName: function () {
            console.log(this.name);
        }
    }
    
    var person1 = new Person('silva', 29, 'IT');
    

    5.动态原型模式

    // 把所有信息都封装在构造函数中
    function Person (name, age, job) {
        this.name = name;
        this.age = age;
        this.job = job;
        if (typeof this.sayName != 'function') {
            Person.prototype.sayName = function () {
                console.log(this.name);
            }
        }
    }
    var person1 = new Person('silva', 29, 'IT');
    

    6.寄生构造函数模式

    // 这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象
    function Person(name, age, job) {
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
        o.sayName = function () {
            console.log(this.name);
        };
        return o;
    }
    var friend = new Person('Mike', 18, 'student');
    friend.sayName();

    相关文章

      网友评论

          本文标题:创建对象模式

          本文链接:https://www.haomeiwen.com/subject/qirwqftx.html