首页 > 编程语言 >【JavaScript】23_instanceof和hasOwn

【JavaScript】23_instanceof和hasOwn

时间:2023-02-22 11:32:09浏览次数:48  
标签:instanceof JavaScript console log 对象 Object dog 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>

标签:instanceof,JavaScript,console,log,对象,Object,dog,hasOwn
From: https://blog.51cto.com/wujianrenn/6078844

相关文章

  • 【JavaScript】24_旧类与new运算符
    14、旧类早期JS中,直接通过函数来定义类一个函数如果直接调用xxx()那么这个函数就是一个普通函数一个函数如果通过new调用newxxx()那么这个函数就是一个够早函数​......
  • JavaScript 数组遍历的五种方法(转)
    转自:JavaScript数组遍历的五种方法这篇文章主要介绍了JavaScript数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下在使用JavaScri......
  • 在PHP和JavaScript中设置Cookie、会话存储(SessionStorage)和本地存储(LocalStorage)
    A.Cookie介绍Cookie:Cookie常用于识别用户,它是服务器留在用户计算机中的小文件(大小限制在4KB),每当相同的计算机通过浏览器请求页面时,它会同时发送Cookie,即Cookie是随HTTP......
  • JavaScript相关操作
    JQUERY--HTML标签属性操作$('#id').attr('attr_name','attr_value');//设置单一属性值$('#id').attr({'attr_name1':'attr_value1','attr_name2':'attr_value2'});//......
  • 深入理解JavaScript对象
    前言在JavaScript中,对象是一种非常常见的数据类型,几乎每个程序员都会在日常工作中频繁地使用对象。在本篇文章中,我们将深入了解JavaScript对象的一些基本概念和一些高......
  • JavaScript 中字符串和数组的截取办法总结
    字符串substring形式:substring(index1,index2)不会改变原始字符串将小的参数作为开始位置start,大的作为结束位置stop包含start,但不包含stop如果只给一个参数表......
  • 【JavaScript】21_对象的结构
    9、对象的结构对象中存储属性的区域实际有两个:对象自身直接通过对象所添加的属性,位于对象自身中在类中通过x=y的形式添加的属性,位于对象自身中原型对象(prototype)对象中......
  • 【JavaScript】22_原型对象与修改原型
    11、原型对象访问一个对象的原型对象对象.protoObject.getPrototypeOf(对象)原型对象中的数据:对象中的数据(属性、方法等)constructor(对象的构造函数)注意:原型对象也有原型......
  • JavaScript数组的方法大全(最新)
    JavaScript数组方法大全趁着有时间,总结了下数组所有的属性和方法,记录博客,便于后续使用array.at()at方法,用于获取数组中,对应索引位置的值,不能修改。语法:array.at(cou......
  • 判断JavaScript数据是否为空
    getObjType=(obj)=>{consttype=Object.prototype.toString.call(obj)constarray=type.split(/\s/g)returnarray[1].replace(']','')}is......