坏小仔

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

原型对象的最大问题是由其共享的本性所导致的。

原型中的所有属性被很多实例共享:

  •   通过在实例中添加一个同名属性,可以隐藏原型中的对应属性(通过实例对象操作原型对象中的属性只能读,不能写)
  •   对于包含引用类型的值有所不同
View Code
 1 function Person(){
 2 
 3 }
 4 
 5 Person.prototype = {
 6   constructor: Person,
 7   name: 'default name',
 8   age: 0,
 9   friends: ['A', 'B']
10 }
11 
12 var person1 = new Person();
13 var person2 = new Person();
14 
15 person1.name = "June";    //在person1实例对象中添加name属性
16 person2.name = "Crazy";    //在person2实例对象中添加name属性
17 
18 person1.friends.push('C');   //修改了原型中的friends属性
19 
20 alert(person2.friends) //['A', 'B', 'C']

这种情况适用于所有实例共享同一个属性(该例为friends数组),但是,当各个实例要有属于自己的全部属性,就会出现问题。

posted on 2013-03-24 10:16  坏小仔  阅读(182)  评论(0编辑  收藏  举报