原型对象存在的问题及解决方式

一.原型对象虽然可以对所有实例的属性跟方法共享,但是他的局限性也是很明显的,正是因为共享的特征,也导致原型存在最大的问题

[解决方案]:我们一般组合使用构造函数式和原型模式,在实际开发中,这种模式也应用最广泛

【egg】:

function Person(){

 }

 Person.prototype = {

  constructor:Person,

  name:"z3",

  age:20,

  job:"程序员",

  friend:['李四','王五'],

  sayName:function(){

   alert("我的名字");

  }

 }

 var p1 = new Person();

 var p2 = new Person();

 p1.friend.push("赵六");

 alert(p1.friend);

 alert(p2.friend);

 function Person(name,age,friend,job){

  this.name = name;

  this.age = age;

  this.friend = friend;

  this.job = job;

 }

 Person.prototype = {

  constructor:Person,

  sayName:function(){

   alert(this.name);

  }

 }

 var p1 = new Person("z3",20,['王五','赵六'],'技术总监');

 var p2 = new Person('z4',30,['哈哈哈','你好'],'boss');

 alert(p1.friend);

 alert(p2.friend);

上边的第一个例子,体现出了原型继承的劣势,解决方案是通过后边的构造函数 + 原型继承的形式的方式解决的;

你可能感兴趣的:(原型对象存在的问题及解决方式)