我正在使用“hasOwnProperty”函数来扩展兼容性,但JSHint说不推荐使用Object.prototype .__ proto__.有一种方法可以重写此功能以避免此警告并确保兼容性?
var hasOwnProperty = function (obj, prop) {
var proto = obj.__proto__ || obj.constructor.prototype;
return (prop in obj) &&
(!(prop in proto) || proto[prop] !== obj[prop]);
};
解决方法:
执行您尝试执行的操作的“正确”方法是使用Object.getPrototypeOf
功能:
var proto = Object.getPrototypeOf(obj);
这在Internet Explorer 8及以下版本中不受支持,但如果您需要支持旧环境,则可以扩展测试以包括对其进行检查,并在必要时回退到__proto__.
这显然不会避免JSHint警告,所以你可能仍然想要设置proto
选项将其关闭.