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 选项将其关闭。