之前说过,单独使用原型模式存在很多缺点,很少有人单独使用原型模式
创建自定义类型最常见的方式是组合使用构造函数和原型模式。即,构造函数用于定义实例属性,原型模式用于定义方法和共享概念股属性,结果是每个实例都会有自己的一份实例属性的副本,但同时又有着对方法的共享,最大限度的节省了内存空间。
function Person(name,age,job){
this.name = name;
this.age = age;
this.job =job;
this.friend = ["Grey","cq"];
}
Person.prototype = {
constructor:Person,
sayName:fucntion(){alert(this.name)}
}
var person1 = newPerson("csy",18,"CEO");
var person2= newPerson("Grey",18,"CTO");
person1.friend.push("Van");
alert(person1.friend);//"Grey","cq",“Van”
alert(person2.friend);//"Grey","cq"可见person1的修改并没有影响到person2
alert(person1.friend == person2.friend)//false
alert(person1.sayName==person2.sayName);//true 可见sayName是共享的