Do not access Object.prototype method ‘hasOwnProperty‘ from target object

调用 hasOwnProperty 报错:不要使用对象原型上的方法,因为原型的方法可能会被重写

复制代码
if (this.formData.selectFields.hasOwnProperty(selectField)) {
          delete this.formData.selectFields[selectField];
        } else {
          this.formData.selectFields[selectField] = true;
        }

出现这种报错是因为使用Vue.js启动项目会自动生成配置为与ESLint一起使用的样板

在ECMAScript5.1中,新增了 Object.create,它支持使用指定的 \[Prototype] 创建对象。Object.create(null)是一种常见的模式,用于创建将用作映射的对象

Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法

因为 no-prototype-builtins 规则不允许Object.prototype直接从对象调用方法,所以会导致这种错误

解决方法

可以通过使用call()函数来调用不属于本身this对象的方法:Object.prototype.hasOwnProperty.call( )

复制代码
if (
          Object.prototype.hasOwnProperty.call(
            this.formData.selectFields,
            selectField
          )
        ) {
          delete this.formData.selectFields[selectField];
        } else {
          this.formData.selectFields[selectField] = true;
        }

**call方法的使用 **

复制代码
call() 方法是预定义的 JavaScript 方法。

它可以用来调用所有者对象作为参数的方法。

通过 call(),您能够使用属于另一个对象的方法。
相关推荐
想吃火锅10055 天前
【前端手撕】instanceof
前端·javascript·原型模式
UXbot5 天前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app
UXbot5 天前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
UXbot5 天前
原型设计工具如何帮助新人快速进入产品行业?
前端·低代码·ui·交互·团队开发·原型模式·web app
sunny.day10 天前
js原型与原型链
开发语言·javascript·原型模式·js原型链
UXbot11 天前
AI网页开发工具能替代工具吗?5大平台对比
前端·人工智能·低代码·ui·原型模式·web app
weixin_3077791311 天前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
swordbob11 天前
prototype 注入到 singleton 里,prototype是否还是线程安全的
安全·spring·单例模式·原型模式
isNotNullX12 天前
企业数据中台建设,ETL工具选错了会踩哪些坑?
数据仓库·etl·原型模式
半个烧饼不加肉12 天前
JS 底层探究-- 普通函数和构造函数
开发语言·javascript·原型模式