JavaScript使用原型方式创建对象所带来的问题

<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>

你可能感兴趣的:(JavaScript使用原型方式创建对象所带来的问题)