动态原型模式,解决原型创建对象的时候未封装问题

//动态原型模式
function Box(name,age){
    this.name = name;
    this.age = age;
    this.family = ['哥哥','姐姐','妹妹'];

    if(typeof this.run != 'function'){        //判断this.run是否存在
        Box.prototype.run = function(){
            return this.name + this.age + '运行中...';
        };
    }
    
}

//原型的初始化,只要第一次初始化就可以了,没必要每次都初始化

var box1 = new Box('Lee',100);
alert(box1.run());

var box2 = new Box('Jak',200);
alert(box2.run());

ps:使用动态原型模式,要注意一点,不可以再使用字面量的方式重写原型,因为会切断实例和新原型之间的联系。

posted @ 2014-08-17 16:55  little fly  阅读(147)  评论(0编辑  收藏  举报