JSHINT:不推荐使用__proto__属性

时间:2015-03-25 11:27:46

标签: 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]);
};

2 个答案:

答案 0 :(得分:8)

执行您要执行的操作的“正确”方法是使用Object.getPrototypeOf函数:

var proto = Object.getPrototypeOf(obj);

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

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

答案 1 :(得分:3)

如果您想避免重写代码,可以将以下内容添加到文件的顶部。您可以使用It's one of the "relaxing" options in JSHint来减少警告的数量:

/* jshint proto: true */