【JavaScript】25_instanceof和hasOwn

举报
魔天伦 发表于 2023/02/26 21:00:45 2023/02/26
【摘要】 13、instanceof和hasOwn instanceof 用来检查一个对象是否是一个类的实例instanceof检查的是对象的原型链上是否有该类实例​ 只要原型链上有该类实例,就会返回truedog -> Animal的实例 -> Object实例 -> Object原型Object是所有对象的原型,所以任何和对象和Object进行instanceof运算都会返回true ...

13、instanceof和hasOwn

instanceof 用来检查一个对象是否是一个类的实例

  • instanceof检查的是对象的原型链上是否有该类实例

​ 只要原型链上有该类实例,就会返回true

  • dog -> Animal的实例 -> Object实例 -> Object原型

  • Object是所有对象的原型,所以任何和对象和Object进行instanceof运算都会返回true

in

  • 使用in运算符检查属性时,无论属性在对象自身还是在原型中,都会返回true

对象.hasOwnProperty(属性名) (不推荐使用)

  • 用来检查一个对象的自身是否含有某个属性

Object.hasOwn(对象, 属性名)

  • 用来检查一个对象的自身是否含有某个属性
    <script>
        class Animal {}
        class Dog extends Animal {}
        const dog = new Dog()

        // console.log(dog instanceof Dog) // true
        // console.log(dog instanceof Animal) // true
        // console.log(dog instanceof Object) // true

        const obj = new Object()

        // console.log(obj.__proto__)
        // console.log(Object.prototype)

        // dog.__proto__ / Dog.prototype

        class Person {
            name = "孙悟空"
            age = 18

            sayHello() {
                console.log("Hello,我是", this.name)
            }
        }

        const p = new Person()
        // console.log("sayHello" in p)
        // console.log(p.hasOwnProperty("sayHello"))
        // console.log(p.__proto__.__proto__.hasOwnProperty("hasOwnProperty"))

        console.log(Object.hasOwn(p, "sayHello"))
    </script>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。