美文网首页
ESLint 的 no-prototype-builtins 规

ESLint 的 no-prototype-builtins 规

作者: 努力与幸运 | 来源:发表于2020-12-07 15:23 被阅读0次

开发过程中,遇到这个问题:

image.png
点快速修复的,会出现这个:
image.png
后来又查了一下,找到了这个链接:
https://juejin.cn/post/6844903881437085709
才明白其中的缘由:
在 JS 中,往往通过改变原型链实现继承。一旦原型链发生改变,原先可以访问到的原型属性、方法便可能无法访问。考虑最极端的情况,若 obj 原先原型链的最顶端是 Object,此时可以通过原型链访问 Object.hasOwnProperty 方法;而若改变后,顶端不再是 Object,那么访问 obj.hasOwnProperty 访问就会得到 undefined。因此,直接从对象访问原型方法,很可能会带来隐藏的 BUG。
我采用的解决方法也是合理的,即直接在 Object 对象上调用其方法,利用 call 改变其 this 指向到我们的目标对象上,即可安全使用 hasOwnProperty 方法了。
所以将解决方法改成这样:
Object.prototype.hasOwnProperty.call(obj, 'key')

相关文章

网友评论

      本文标题:ESLint 的 no-prototype-builtins 规

      本文链接:https://www.haomeiwen.com/subject/gkhtgktx.html