JSHINT:不推荐使用__proto__属性

car*_*eol 3 javascript cross-browser jshint

我正在使用"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]);
};
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 9

做你正在做的事情的"正确"方法是使用这个Object.getPrototypeOf功能:

var proto = Object.getPrototypeOf(obj);
Run Code Online (Sandbox Code Playgroud)

在Internet Explorer 8及更低版本中不支持这种情况,但如果您需要支持旧环境,则可以扩展测试以包括对其进行检查,并__proto__在必要时回退.

这显然不会避免JSHint警告,所以你可能仍然想要设置proto选项将其关闭.


And*_*ndy 5

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

/* jshint proto: true */
Run Code Online (Sandbox Code Playgroud)