JSHINT:不推荐使用 __proto__ 属性
JSHINT: The __proto__ property is deprecated
我正在使用 "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]);
};
如果您想避免重写代码,可以将以下内容添加到文件顶部。 It's one of the "relaxing" options in JSHint 您可以使用它来减少收到的警告数量:
/* jshint proto: true */
"correct" 方法是使用 Object.getPrototypeOf
函数:
var proto = Object.getPrototypeOf(obj);
这在 Internet Explorer 8 及更低版本中不受支持,因此如果您需要支持旧环境,您可以扩展测试以包括对此的检查,并在必要时回退到 __proto__
。
虽然这显然无法避免 JSHint 警告,因此您可能仍需要设置 proto
选项将其关闭。
我正在使用 "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]);
};
如果您想避免重写代码,可以将以下内容添加到文件顶部。 It's one of the "relaxing" options in JSHint 您可以使用它来减少收到的警告数量:
/* jshint proto: true */
"correct" 方法是使用 Object.getPrototypeOf
函数:
var proto = Object.getPrototypeOf(obj);
这在 Internet Explorer 8 及更低版本中不受支持,因此如果您需要支持旧环境,您可以扩展测试以包括对此的检查,并在必要时回退到 __proto__
。
虽然这显然无法避免 JSHint 警告,因此您可能仍需要设置 proto
选项将其关闭。