<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> class A { } class D extends A { } const Dc = new D() console.log(Dc instanceof D) //T console.log(Dc instanceof A) //T console.log(Dc instanceof Object) //T console.log(`----*-----`) /* instaanceof 检查对象是否是类实例 -检查对象原型链上是否有该实例 Y----TRUE 此处 D > A > obj > obj原型 */ class C { name="十一" age=18 hi(){ console.log("HI~") //‘hi’在对象的原型中 } } const ci=new C() console.log("hi" in ci) console.log(`----**-----`) // 使用in检查时,无论属性在对象自身或原型中,都会返回True console.log(ci.hasOwnProperty('age'))//T console.log(ci.hasOwnProperty('hi'))//F console.log(`----***-----`) //使用hasOwnProperty检查时,属性在对象自身中,返回T,否则F 实例方法 不建议 console.log(Object.hasOwn(ci,'name'))//T console.log(Object.hasOwn(ci,'hi'))//F console.log(`----****-----`) //同hasOwnProperty 静态方法 //hasOwnProperty/hasOwn 区别在于找null继承问题 const oa=Object.create(null) const ob=Object.create(null) console.log(Object.hasOwn(ob,"meiyou")) //F console.log(Oa.hasOwnProperty()) //报错 /*总之 可以简单理解为 instanceof 检查X属性是否存在对象原型中 in 检查X属性是否存在某对象中 hasOwnProperty/hasOwn 检查X属性是否存在对象自身中 */ </script> </body> </html>
记得复习