js构造函数原型中的数组实例化奇怪的问题

为什么在构造函数里面给原型添加属性....
【js构造函数原型中的数组实例化奇怪的问题】 比起回答,我更想知道的是楼主这样写的想法?

■网友
当你通过new操作符实例化一个对象的时候,此时new操作符实际执行以下几个步骤:
1. 创建一个对象
2. 将这个空对象的__proto__属性指向构造函数的原型对象
3. 将this指针指向该对象
4. 执行构造函数内部的代码
5. 返回该对象
你在构造函数内部定义了原型属性,通过new操作符每实例化出来一个对象,就执行一次构造函数内部的代码,那么就意味着无论实例化多少个对象,它们的原型属性technologys始终是被初始化为。
function Foo(){ Foo.prototype.username = \u0026#39;suoz\u0026#39;; Foo.prototype.number = ;}var obj1 = new Foo();obj1.push(\u0026#39;three\u0026#39;);alert(obj1.number);\t\t//one,two,threevar obj2 = new Foo();alert(obj2.number);\t\t//one,twoalert(obj1.number);\t\t//one,two一般创建对象都采用构造函数和原型的组合模式
function Foo(username){\tthis.username = username;\tthis.number = ;}Foo.prototype.getUsername = {\treturn this.username;}var obj = new Foo(\u0026#39;suoz\u0026#39;);这样解决了原型模式创建对象的弊端(原型属性内部如果包含引用类型的值,由同一特定类型实例化出来的对象会共享该属性,其中一个对象改变该属性的值,其它对象下的该原型属性也会受到互相影响);
也解决了构造函数模式创建对象的弊端(多个实例化出来的对象的实例方法是相同的,如果创建多个对象,同时也会创建多个相同的方法)
你可能觉得这样封装性不好,你想将所有操作封装在一个构造函数内部,那么你可以使用动态原型模式创建对象
function Foo(username){\tthis.username = username;\tthis.number = ;\tif(typeof this.getUsername != \u0026#39;function\u0026#39;){\t\tFoo.prototype.getUsername = function(){\t\t\treturn this.username;\t\t};\t}}var obj = new Foo(\u0026#39;suoz\u0026#39;);
■网友
醉人,你在构造函数里修改原型干嘛


    推荐阅读