对象中是否有某一个属性是否存在有三种方法 in hasOwnProperty Object.hasOwn

如何看某个对象中没有某一个属性
如果我们要检测对象是否拥有某一属性,可以用in操作符

var obj= {
    name: '类老师',
    age: 18,
    school: '家具'  
};
console.log('age' in obj); // true
console.log('grade' in obj); // false
在vue中的实际应用,通过判断是否有某一个属性,是否展示出这个标签。
<h2 class="tab-meassage-timeweek" v-if=" 'weekunkown' in  item==true? true : false ">{{item.weekunkown}}</h2>
疑惑的地方
let xiaoming={};
console.log('Function' in xiaoming);//为false
console.log('toString' in xiaoming);//为什这里是true了  不是也应该是false吗
看了下面这张图,你就知道了,因为继承啊
因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以obj也拥有toString属性。
或者说
in 如果指定的属性位于对象或其原型链中,“in”运算符将返回true(原型链上的属性会读取)

2. hasOwnProperty
hasOwnProperty 方法会返回一个布尔值。
表示对象自身属性中是否具有对应的值(原型链上的属性不会读取)。

var obj= {    
    name: '陈三',    
    age: 18,    
    school: '宇宙银河系'  
};
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('toString'); // false
// 创建空对象会报错。 空对象是会报错的哈~
let emptyObj = Object.create(null) // 在现实中很少这样使用
console.log(emptyObj.hasOwnProperty('name')) // 报错

// 不会报错
let emptyObj = {}
console.log(emptyObj.hasOwnProperty('name')) // 输出false
3. 使用 Object.hasOwn
Object.hasOwn  可以避免 in 的继承。
也可以避免创建空对象报错的问题。

 // 避免继承
let xiaoming = {};
let flag1 = Object.hasOwn(xiaoming, 'toString')
console.log(flag1) //false

//避免空对象报错
let emptyObj = Object.create(null) // 在现实中很少这样使用
let flag2 = Object.hasOwn(emptyObj, 'name')
console.log(flag2) //false
```
posted @   南风晚来晚相识  阅读(434)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示