创建对象的方法(三)

2018-06-02  本文已影响0人  QinRenMin

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);
}
上一篇下一篇

猜你喜欢

热点阅读