所谓对象的原生方法, 也就是对象的原型链上的方法, 比如Object.prototype.hasOwnProperty(), 但原生方法可以在实例对象中覆盖, 这是如果我们想调用它的原生方法, 那就需要使用Function.prototype.call()方法了.
var obj = {}; obj.hasOwnProperty('toString') // false // 覆盖掉继承的 hasOwnProperty 方法 obj.hasOwnProperty = function () { return true; }; obj.hasOwnProperty('toString') // true Object.prototype.hasOwnProperty.call(obj, 'toString') // false
将Object.prototype.hasOwnProperty()方法置于obj对象环境中去执行, 此时就不会调用到obj.prototype.hasOwnProperty()方法, 因此不会受到影响.