13、instanceof和hasOwn
instanceof 用来检查一个对象是否是一个类的实例
- instanceof检查的是对象的原型链上是否有该类实例
只要原型链上有该类实例,就会返回true
- dog -> Animal的实例 -> Object实例 -> Object原型
- Object是所有对象的原型,所以任何和对象和Object进行instanceof运算都会返回true
in
- 使用in运算符检查属性时,无论属性在对象自身还是在原型中,都会返回true
对象.hasOwnProperty(属性名) (不推荐使用)
- 用来检查一个对象的自身是否含有某个属性
Object.hasOwn(对象, 属性名)
- 用来检查一个对象的自身是否含有某个属性
<script>标签:instanceof,JavaScript,console,log,对象,Object,dog,hasOwn From: https://blog.51cto.com/wujianrenn/6078844
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>