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(),您能够使用属于另一个对象的方法。
相关推荐
我登哥MVP12 天前
走进 Gang of Four 设计模式:访问者模式
java·设计模式·访问者模式·原型模式
学究天人13 天前
数学公理体系大全:第五章 序数与基数理论:超限算术与集合的大小
人工智能·线性代数·算法·机器学习·数学建模·原型模式
学究天人13 天前
数学公理体系大全:第六章 选择公理的等价形式及证明
人工智能·线性代数·算法·机器学习·数学建模·概率论·原型模式
学究天人14 天前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(补充卷9)
人工智能·线性代数·算法·数学建模·动态规划·原型模式·抽象代数
geovindu15 天前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
Seven凹凸Man15 天前
WorkBuddy之产品经理原型设计及PRD实战
ai·原型模式
ttod_qzstudio16 天前
【软考设计模式】原型模式:“克隆“对象与深拷贝、浅拷贝精讲
设计模式·原型模式
希冀12320 天前
【JavaScript】Javascript—JS进阶—Day03
开发语言·javascript·原型模式
想吃火锅10051 个月前
【前端手撕】instanceof
前端·javascript·原型模式
UXbot1 个月前
帮助企业低门槛开展AI应用开发的平台推荐
前端·低代码·ui·交互·产品经理·原型模式·web app