使用hasOwnProperty时报错的解决方法

 更新时间:2024年01月04日 15:10:32   作者:嘿!陈俊彦  
hasOwnProperty这个方法是用来查找一个对象是否有某个属性,且查找的属性必须是对象本身的一个成员,但是不会去查找对象的原型链,文中介绍了使用示例代码及使用时可能会遇到的问题,对hasOwnProperty报错原因分析及解决方法感兴趣的朋友一起看看吧

hasOwnProperty

hasOwnProperty这个方法是用来查找一个对象是否有某个属性,且查找的属性必须是对象本身的一个成员,但是不会去查找对象的原型链。
使用示例:

var obj = {
    a: 1,
    fun: function(){},
    c:{
        d: 5
    }
};
console.log(obj.hasOwnProperty('a'));  // true
console.log(obj.hasOwnProperty('fun'));  // true
console.log(obj.hasOwnProperty('c'));  // true
console.log(obj.c.hasOwnProperty('d'));  // true
console.log(obj.hasOwnProperty('d'));  // false, obj对象没有d属性

JS中hasOwnProperty方法用法简介

hasOwnProperty用法

使用时可能会遇到的问题

由于ESLint升级,在项目中直接使用xxx.hasOwnProperty()可能会导致:

error  Do not access Object.prototype method 'hasOwnProperty' from 
target object  no-prototype-builtins

这个错误提示大概就是说:不要从目标对象上访问 Object 原型方法。在ECMAScript 5.1中,新增了 Object.create,它支持使用指定的 [[Prototype]] 创建对象。我们可以通过使用call()方法来调用不属于本身this对象的方法。
例如:

var a = {
  today: '2022年5月11号',
  weather: '阴天'
  show: function(){
    return this.today+ '是' + this.weather
  }
}
var b = {
  today: '2022年5月30号',
  weather: '晴天'
}
//调用a的show方法,并用于b
b.show.call(a)  
console.log(b)  //输出为:2022年5月30是晴天

所以解决该问题的方法为:将xxx.hasOwnProperty(‘yyy’)修改为Object.prototype.hasOwnProperty.call(xxx, ‘yyy’)。
代码示例:

 handleEdit(todo) {
            // if(todo.hasOwnProperty('isEdit')){
            //    todo.isEdit = true;
            // }else{
            //   this.$set(todo,'isEdit',true)
            // }
            if(Object.prototype.hasOwnProperty.call(todo, 'isEdit')){
               todo.isEdit = true;
            }else{
              this.$set(todo,'isEdit',true)
            }
          },

到此这篇关于使用hasOwnProperty时报错的解决方法的文章就介绍到这了,更多相关hasOwnProperty报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • layui 图片上传+表单提交+ Spring MVC的实例

    layui 图片上传+表单提交+ Spring MVC的实例

    今天小编就为大家分享一篇layui 图片上传+表单提交+ Spring MVC的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript this关键字的深入详解

    JavaScript this关键字的深入详解

    这篇文章主要给大家介绍了关于JavaScript this关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • JavaScript实现cookie的写入、读取、删除功能

    JavaScript实现cookie的写入、读取、删除功能

    cookie 是存在有效期的,在默认情况下,一个 cookie 的生命周期就是在浏览器关闭的时候结束,本文给大家介绍关于javascript对于cookie的简单操作,比如对于cookie的写入和删除,代码简单易懂,需要的朋友参考下
    2015-11-11
  • JS实现向iframe中表单传值的方法

    JS实现向iframe中表单传值的方法

    这篇文章主要介绍了JS实现向iframe中表单传值的方法,涉及js针对页面元素及表单属性操作相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • JavaScript用Number方法实现string转int

    JavaScript用Number方法实现string转int

    parseInt方法在format'00'开头的数字时会当作2进制转10进制,所以建议string转int最好用Number方法
    2014-05-05
  • js弹出对话框方式小结

    js弹出对话框方式小结

    这篇文章主要介绍了js弹出对话框方式,结合大量实例总结分析了JavaScript常用的弹出对话框的实现技巧与相关函数的具体使用方法,需要的朋友可以参考下
    2015-11-11
  • JS原生实现轮播图的几种方法

    JS原生实现轮播图的几种方法

    这篇文章主要介绍了JS原生实现轮播图的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • uniapp小程序视图容器cover-view使用详解

    uniapp小程序视图容器cover-view使用详解

    在日常开发中,使用uniapp开发项目有时会遇到需要覆盖组件的问题,但由于某些组件的渲染优先级过高,例如video,map ,在小程序中只能使用cover-view去覆盖,这篇文章主要给大家介绍了关于uniapp小程序视图容器cover-view使用的相关资料,需要的朋友可以参考下
    2022-08-08
  • javascript简单实现深浅拷贝过程详解

    javascript简单实现深浅拷贝过程详解

    这篇文章主要介绍了javascript简单实现深浅拷贝过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • javascript实现checkBox的全选,反选与赋值

    javascript实现checkBox的全选,反选与赋值

    这篇文章主要介绍了javascript实现checkBox的全选,反选与赋值的方法,以实例形式详细分析了实现的思路及对应的html与js代码的实现过程
    2015-03-03

最新评论