<script>
/**
* 基于原型的创建虽然可以有效的完成封装,但是依然有一些问题
* 1、无法通过构造函数来设置属性值
* 2、当属性中有引用类型变量时,可能存在变量值重复
*/
function Person() {};
Person.prototype = {
constructor:Person,
name:"Jack",
age:30,
friends:["Ada", "Linda"],
say:function(){
alert(this.name + "[" + this.friends + "]");
}
}
var p1 = new Person();
p1.name = "john";
p1.say();
// 会在原型中招friends,所以Mike是在原型中增加的
p1.friends.push("Mike"); // 为p1增加了一个朋友
// 此时原型中就多了一个Mike,这就是原型带来的问题
var p2 = new Person();
p2.say();
</script>