2.7原型链模式扩展-批量设置公有属性

重构原型对象的方式:自己新开辟一个堆内存,存储我们公有的属性和方法,把浏览器原来给Fn.prototype开辟的那个替换掉

  1.只有浏览器天生给Fn.prototype开辟的堆内存里面才有constructor,而我们自己开辟的堆内存没有这个属性,这样constructor指向就不是Fn而是Object,为了和原来的保持

   一致,我们需要手动的增加constructor的指向

function Fn(){

  this.x = 100

}

Fn.prototype = {

  constructor: Fn,

  a: function () {},

  b: function () {}

}

var f1 = new Fn;

f.a()

f.b()

  

2.用这种方式给内置类增加公有的属性

     给内置类增加数组去重的方法

     Array.prototype.unique = {

    constructor: Array,

    unique: function () {}

     }

  我们这种方式会把之前已经存在于原型上的属性和方法替换掉了,所以我们用这种方式修改内置类的话,浏览器是个屏蔽掉的

  但是我们可以一个个的修改内置的方法,当我们通过下述方式在数组的原型上增加方法。如果方法名和原来内置的重复了,会把人家内置的修改掉,我们以后再内置类的原型上增加方法,命名都需要加特殊前缀

  Array.prototype.sort = function () {

    console.log("ok");// this->ary 我们当前要操作的这个数组

  }

  var ary = [1,2,3,2,3,4,5];

  ary.sort()

  console.log(ary)

原文地址:https://www.cnblogs.com/z-dl/p/8929871.html