JSHINT:__proto__属性已弃用

JSHINT: The __proto__ property is deprecated

本文关键字:proto JSHINT 属性      更新时间:2023-09-26

我正在使用"hasOwnProperty"函数来扩展兼容性,但JSHint表示不赞成使用Object.protype.__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选项来关闭它。

如果您想避免重写代码,可以在文件顶部添加以下内容。这是JSHint中的一个"放松"选项,您可以使用它来减少收到的警告数量:

/* jshint proto: true */