JS检测属性位于对象本身还是来自于其原型链

这篇具有很好参考价值的文章主要介绍了JS检测属性位于对象本身还是来自于其原型链。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习原型链时有这个疑问,之前查过了但是老是忘记,现在记录一下,避免忘记。

参考:https://blog.csdn.net/weixin_40920953/article/details/88295651

1.in操作符

in 操作符会在通过对象能够访问给定属性时返回true,无论该属性存在于对象本身还是其原型链上。

    function Person(name) {
      this.name = name
    }
    let obj = new Person('Tom')
 
 
    Person.prototype.gender = 'male'
    Person.prototype.code = 23
    
    console.log("name" in obj) // true
    console.log('code' in obj) // true
    console.log('gender' in obj) // true

 2.obj.hasOwnProperty(prop)

hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性。

    function Person(name) {
      this.name = name
    }
    let obj = new Person('Tom')
    
    Person.prototype.gender = 'male'
    Person.prototype.code = 23
 
    console.log(obj.hasOwnProperty('name')) // true
    console.log(obj.hasOwnProperty('code')) // false

 3.两者结合判断属性位于对象本身还是来自于其原型链文章来源地址https://www.toymoban.com/news/detail-622180.html

    function Person(name) {
      this.name = name
    }
    let obj = new Person('Tom')
 
    Person.prototype.gender = 'male'
    Person.prototype.code = 23
 
    function propertyFormPrototype(obj, prop) {
      return obj.hasOwnProperty(prop) && prop in obj
     //当return为true时表示属性位于对象本身
    }
    console.log(propertyFormPrototype(obj, 'name')) // true
    console.log(propertyFormPrototype(obj, 'code')) // false

到了这里,关于JS检测属性位于对象本身还是来自于其原型链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js中遍历对象数组并获取对象相应的属性值

    JavaScript中遍历对象数组的方法有很多种。以下是常见的四种常见的方法: for ​循环, for...of ​循环, forEach ​方法和 map ​方法,在遍历的同时,通过访问对象的属性来获取相应的值。 ​ for ​循环: ​ for...of ​循环: ​ forEach ​方法: ​ map ​方法(通常用于创建一个

    2023年04月25日
    浏览(38)
  • js对象获取属性的方法(.和[]方式)

    js对象获取属性有两种方法:1.通过.的方式  2. 通过[]方式 // 通过.方式获取属性值,key是静态的 var aa = {name: \\\"zhang\\\", age: 18}; console.log(aa.name);   // 通过[]获取属性值, key是动态的,可以是字符串,或者数字的形式 var bb = {\\\"apple\\\": 3, \\\"pear\\\": 2} var cc = {1: \\\"number1\\\", 2: \\\"number2\\\"} console.log(b

    2024年02月01日
    浏览(43)
  • js获取对象属性值的方法

    场景:已知对象的某属性,我们需要获取对象中的属性值 js获取对象属性值的方法 通过 . 获取 通过 [ ] 获取 接下来介绍一下两种方法的不同点 [ ]运算符可以用 数字 作为属性名,点运算符不能 [ ]运算符可以用 变量 作为属性名,点运算符不能 ps: 用变量key获取对象中的属性

    2024年02月02日
    浏览(48)
  • Js:获取数组对象重复属性值和数组对象去重

    对象数组去重分为两类:根据某一属性去重,和去重完全相同对象(属性属性值都相同) 一.数组嵌套对象,根据对象某一属性去重 二、数组嵌套对象,去重完全相同对象(属性属性值都相同) 整理如下: 首先、循环数组,拿到对象的所有属性组成的数组; 其次、循环属性

    2024年01月21日
    浏览(53)
  • js中对象的属性要注意的点以及在vue中watch对象的属性的方法

    取对象值有两种方式, const obj={ a:\\\'1\\\' } obj.a或者obj[\\\'a\\\'],中括号还可以写成 const name = \\\'a\\\' obj[name]和obj[\\\'a\\\']是一个意思。 然后在vue的watch要监听对象的属性,写法是 watch:{ \\\'obj.a\\\'(new,old){} } 这样的方式。 然后对象的深度拷贝可以通过自己手写递归来实现,也可以通过JSON.parse(JSON.str

    2024年02月21日
    浏览(49)
  • js如何获取对象中的所有属性

    循环遍历对象的 所有属性 ,并逐个输出它们的值;每次执行时,都会将一个属性名赋值给所定义的变量 输出一个对象的所有 属性名 ,该方法返回一个数组,数组内包括对象内可枚举属性 输出一个对象的所有 属性值 。该方法返回一个数组,数组内包含对象自身所有可枚举

    2024年02月11日
    浏览(47)
  • js判断对象是否存在某个属性的办法

    在 JavaScript 开发中,判断一个对象是否存某个属性在是非常基础的操作,也是开发者经常需要处理的问题之一。然而,繁琐的代码可能会让我们感到疲惫不堪,因此这里将介绍几种 JavaScript 小技巧,帮助你更高效地判断对象属性的存在性,提高代码效率⏱。 👋 技巧一: 使用

    2024年02月09日
    浏览(74)
  • js在数组对象中添加和删除键值对(对象属性)的方法

    添加 1.Object.assign():用法-Object.assign(源对象, {要添加的键值对}) 2.拓展运算符(...):用于取出参数对象所有可遍历属性然后拷贝到当前对象 3.object[key] = value:直接给新的key赋值 删除 1.将属性设置为 undefined:属性本身仍将存在于对象中,它还会改变原始对象。 2.使用 delete 操

    2024年02月14日
    浏览(55)
  • JS判断对象、数组是否包含某个属性、某个值

    可以使用以下几种方法来判断对象是否包含某个属性: 1. in 操作符: 使用 in 操作符可以检查对象是否包含指定的属性。它会检查对象及其原型链上的所有属性。 2. hasOwnProperty() 方法: hasOwnProperty() 是对象的内置方法,用于检查对象自身是否具有指定的属性(不包括原型链上

    2024年02月09日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包