动态原型模式,解决原型创建对象的时候未封装问题
//动态原型模式 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:使用动态原型模式,要注意一点,不可以再使用字面量的方式重写原型,因为会切断实例和新原型之间的联系。