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

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

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

【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);

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容