function Fn(){ this.x = 100; } /* 1.把原来原型指向的地址赋值给我们的pro,现在它们 操作的是同一个内存空间*/ var pro = Fn.prototype; pro.getA =function(){}; pro.getB =function(){}; pro.getC =function(){}; /*2.重构原型的方式—>自己新开辟一个堆内存,存储我们公有的、 属性和方法,把浏览器原来给Fn.prototype开辟的那个替换掉*/ Fn.prototype ={ // 只有浏览器天生给Fn.prototype开辟的堆内存里面才有constructor,而我们 // 自己开辟的这个堆内存没有这个属性,这样constructor指向就不在是Fn而是 // Object了 // f.constructor 没做任何处理之前 Object // 为了和原来的保持一致,我们需要手动的增加 constructor 的指向 constructor:Fn, prototype:Fn, getX =function(){}, getY =function(){}, getZ =function(){} }; // 2、用这种方式 给内置类增加 这么好口爱公有的属性 // 给内置类Arrary 增加数组去重的方法 //````````````````````````````````````````````````` //我们这种方式会把之前已经存在于原型上的属性和方法给替换掉,所以我们中的 // 这种方式修改内置类的话浏览器是给屏蔽掉的 不让你用 // 但是我们可以一个个的修改内置的方法,当我们通过下述方式在数组的原型上增加方法 // 如果方法名和原来的内置的重复,会把人家内置的修改掉-->我们以后再内置类的原型上 //增加方法,命名都需要加特殊的前缀 myUnique Array.prototype = { constructor:Array, unique:function(){ } };
时间: 2024-10-23 17:04:31