JavaScript23_instanceof和hasOwn

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript23_instanceof和hasOwn相关的知识,希望对你有一定的参考价值。

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>

以上是关于JavaScript23_instanceof和hasOwn的主要内容,如果未能解决你的问题,请参考以下文章

javascript中原型链与instanceof 原理

JavaScript instanceof 运算符深入剖析

javascript typeof 和 instanceof 的区别和联系

javascript typeof 和 instanceof 的区别和联系

Javascript中的typeof和instanceof

javascript中typeof和instanceof