在javascript中,函数也是一种类型或者说是一种对象
hasOwnProperty 是一个函数,作为函数对象,它也有一些方法。
通过apply方法来调用“函数”,可以改变函数体内this指针的对象。
apply的第一个参数将为 hasOwnProperty 的this对象,第二个参数可以是数组或者arguments 对象,它将被定作调用 hasOwnProperty 的参数
换一种说法,下面这句语句
Object.prototype.hasOwnProperty.apply(v, [i])
等价的做法是:
v.hasOwnProperty = Object.prototype.hasOwnProperty;
v.hasOwnProperty(i);
应该是类库修改了v的hasOwnProperty方法,所以才需要曲线调用Object.prototype.hasOwnProperty方法。 达到类似虚函数覆盖的效果。