美文网首页
创建对象的方法(三)

创建对象的方法(三)

作者: QinRenMin | 来源:发表于2018-06-02 12:59 被阅读0次
    • 组合使用构造函数模式和原型模式
      构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性.
      产生的结果是:每个实例都有自己的一份实例属性的副本,但同时又享有着对方法的引用.
    
    function Peo(name,age) {
        this.name = name;
        this.age = age;
        this.p = ["pingpang","teneis"];
    }
    
    Peo.prototype = {
        constructor : Peo,
        sayName : function () {
            console.log(this.name);
        }
    };
    
    let peo1 = new Peo("wys",21);
    let peo2 = new Peo("qm",20);
    
    peo1.p.pop();
    console.log(peo1.p);
    console.log(peo2.p);
    console.log(peo1.sayName() === peo2.sayName());
    
    

    对于上面的例子来说,如果仅仅使用原型模式,当调用了person1.p.pop()后,person2中的值也会发生变化.

    • 寄生构造函数模式

    与之前说的工厂模式一样,除了用new操作符并且把使用的包装函数叫做构造函数之外没啥差别

    • 动态原型模式

    通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型

    if(typeof  this.sayName() != "function") {
        Peo.prototype.sayName = function () {
            console.log(this.name);
    }
    
    • 稳妥构造函数模式
      可以在对象中添加私有属性,环境安全

    相关文章

      网友评论

          本文标题:创建对象的方法(三)

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