Do not access Object.prototype method ‘hasOwnProperty’ from target object no-prototype-builtins

 2020年01月08日 分类:JavaScript/React/前端设计  评论(1)  阅读(5418)

今天在升级项目依赖发现报如下错误:

Do not access Object.prototype method ‘hasOwnProperty’ from target object no-prototype-builtins

发现是新版本的ESLint使用了禁止直接调用 Object.prototypes 的内置属性开关,说白了就是ESLint 配置文件中的 "extends": "eslint:recommended" 属性启用了此规则。

在ECMAScript 5.1中,新增了 Object.create,它支持使用指定的 [[Prototype]] 创建对象。Object.create(null) 是一种常见的模式,用于创建将用作映射的对象。当假定对象将包含来自Object.prototype 的属性时,这可能会导致错误。该规则防止直接从一个对象调用某些 Object.prototype 的方法。

此外,对象可以具有属性,这些属性可以将 Object.prototype 的内建函数隐藏,可能导致意外行为或拒绝服务安全漏洞。例如,web 服务器解析来自客户机的 JSON 输入并直接在结果对象上调用 hasOwnProperty 是不安全的,因为恶意客户机可能发送一个JSON值,如 {"hasOwnProperty": 1},并导致服务器崩溃。

为了避免这种细微的 bug,最好总是从 Object.prototype 调用这些方法。例如,foo.hasOwnProperty("bar") 应该替换为 Object.prototype.hasOwnProperty.call(foo, "bar")

所以,你可以关闭提示,也可以更新代码,个人建议更新代码,毕竟代码不规范引起的。

参考地址: https://cn.eslint.org/docs/rules/

标签:
wechat_app
微信公众号:webapp_club
关注一下,或许能让你获得更多前端咨询信息。
加载中...
分享中心
各类业务开发,联系QQ:5679361
广告位联系QQ:5679361

评论 1

评论前必须登录

  1. 2222

    智言4年前 (2020-08-23)


如果你觉得本站内容对你有所帮助,比如提升你对编程方面的认识,你可以通过上面的二维码请博主喝杯咖啡,安好。

WEB前端开发部落(公众号:webapp_club)

群列表

前端初级学习群:初级Web前端学习群(后期为支付入群)
PHP初级学习群:PHP(MySQL)学习交流群
QQ群仅作为相关领域讨论平台,均提供高质量问题交流,禁止闲聊,无法接受的朋友请勿加群!
进群需要通过这里获取进群码才能进群哦!