所谓对象的原生方法, 也就是对象的原型链上的方法, 比如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()方法, 因此不会受到影响.

发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

怎样在数组处理方法中使用this讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。