动态原型模式是将所有的信息都封装到工造函数中,而构造函数中初始化原型,有保持了同时在使用构造函数和原型的优点.
1 function Human(name, sex) { 2 this.name = name; 3 this.sex = sex; 4 if (typeof this.say != "function") { 5 Human.prototype.say = function () { 6 alert(this.name); 7 } 8 } 9 }
var man =new Human ("凯撒", "男");
man.say();//凯撒
构造函数中,只用say不存在的情况下,才会将它添加到原型中.这段代码只有在初次调用时才会执行.