JS判断对象属性是否存在的五种方案
创始人
2024-06-02 23:43:44
0

in

JavaScript的in操作符可以用来判断一个属性是否属于一个对象,也可以用来变量一个对象的属性

console.log('name' in {name:'1111'})
console.log('name' in {age:11})

在这里插入图片描述

Reflect.has()

Reflect是在ES2015新增的一个内置对象,提供了与Javascript对象交互的方法。
判断一个对象是否存在某个属性,和 in 运算符] 的功能完全相同。
用法:Reflect.has(obj, propName)

Reflect.has({name:"搞前端的半夏"}, "name"); // true
Reflect.has({name:"搞前端的半夏"}, "age"); // false
Reflect.has({name:"搞前端的半夏"}, "toString"); //true

hasOwnProperty

hasOwnProperty这个方法可以用来检测一个对象是否含有特定的自身属性,即是用来判断一个属性是定义在对象本身而不是继承自原型链的

o = new Object();
o.name = '搞前端的半夏';
o.hasOwnProperty('name');             // 返回 true
o.hasOwnProperty('toString');         // 返回 false
o.hasOwnProperty('hasOwnProperty');   // 返回 falseo={name:"搞前端的半夏"}
o.hasOwnProperty('name');             // 返回 true
o.hasOwnProperty('toString');         // 返回 false
o.hasOwnProperty('hasOwnProperty');   // 返回 false

Object.prototype.hasOwnProperty()

用法:Object.prototype.hasOwnProperty.call(obj, propName);,接受两个参数。请注意我们这里用到了call。改变this的指向。
Object.prototype.hasOwnProperty除了支持hasOwnProperty的相同用法,同时还解决了hasOwnProperty的两个缺点。

o={hasOwnProperty:"搞前端的半夏"}
Object.prototype.hasOwnProperty.call.hasOwnProperty(o,'name'); // 返回false

ES13(ES2022)Object.hasOwn()

Object.hasOwn(),目前来看就是替代Object.prototype.hasOwnProperty.call()。

function hasOwn(obj, propName) {return Object.prototype.hasOwnProperty.call(obj, propName);
}Object.hasOwn({name: '搞前端的半夏'}, 'name')  // true
Object.hasOwn({}, 'name')               //false
Object.hasOwn({}, 'toString')             //false
Object.hasOwn(Object.create(null), 'name')     //false
Object.hasOwn({hasOwnProperty: 'yes'}, 'name')  //false
Object.hasOwn({hasOwn: 'yes'}, 'name')		 //false

相关内容

热门资讯

安卓系统桌面返回按键,桌面返回... 你有没有发现,每次拿起手机,那个小小的安卓系统桌面返回按键就像一个忠诚的小助手,默默陪伴着我们穿梭在...
鸿蒙系统是换壳安卓,揭秘“换壳... 你知道吗?最近科技圈里有个大瓜,那就是鸿蒙系统竟然是换壳安卓!是不是觉得有点不可思议?别急,让我带你...
华为手机安卓系统流畅,引领科技... 你有没有发现,最近用华为手机的小伙伴们都在悄悄地炫耀他们的手机运行得超级流畅呢?这可不是随便说说哦,...
安卓系统短信无通知,无通知新体... 你是不是也遇到了这个问题?手机里的安卓系统短信竟然没有通知,这可真是让人头疼啊!别急,今天就来给你详...
安卓系统彩蛋怎么打开,开启隐藏... 你有没有发现,安卓系统里隐藏着许多有趣的彩蛋呢?这些彩蛋就像是一扇扇神秘的大门,等待着我们去探索。今...
安卓系统关闭压缩内存,安卓系统... 你知道吗?最近在安卓系统里,有一个小秘密引起了大家的热议。那就是关闭压缩内存的功能。听起来有点复杂,...
安卓系统上位机编写,基于安卓系... 你有没有想过,手机里的安卓系统其实是个大宝藏呢?它不仅能让你的生活变得丰富多彩,还能让你成为编程小达...
华为平板安卓7.1系统,探索性... 你有没有发现,最近华为平板的新款机型简直让人眼前一亮?没错,我要跟你聊聊的就是这款搭载了安卓7.1系...
鸿蒙系统安卓怎么升级,轻松实现... 你有没有发现,最近你的华为手机好像有点不一样了?没错,那就是鸿蒙系统升级的魅力!今天,就让我来带你一...
安卓引导系统的软件,架构、功能... 你有没有发现,每次打开安卓手机,那熟悉的引导系统就像一位热情的导游,带你一步步走进这个五彩斑斓的数字...
谷歌做的安卓系统,安卓系统的创... 亲爱的读者,你是否曾好奇过,那个几乎无处不在的安卓系统,究竟是由谁打造的呢?没错,就是那个改变世界的...
安卓系统总提示更新系统,体验流... 手机又闹腾了!安卓系统总提示更新系统,你是不是也和我一样,每次看到这个提示就有点头疼呢?别急,今天就...
aos是安卓系统么?,安卓系统... 你有没有想过,手机里的那个神秘的aos系统,它是不是安卓家族的一员呢?今天,就让我带你一探究竟,揭开...
诺基亚8刷安卓系统,解锁无限可... 你手中的诺基亚8是不是已经有点儿落伍了呢?别急,今天就来给你支个招,让你的老伙计焕发新生,变身安卓小...
安卓系统能不能,可以。 你有没有想过,安卓系统到底能不能?这个问题,就像是在问一个老朋友,他是不是真的懂你。安卓系统,这个陪...
安卓系统恢复误删视频,轻松找回... 手机里的视频突然不见了,是不是你也遇到了这样的尴尬情况?别急,今天就来教你如何用安卓系统恢复误删的视...
华为安卓系统的siri,华为安... 你知道吗?华为最近在安卓系统上搞了个大动作,那就是推出了自己的Siri——华为助手。这可真是让人眼前...
wp模拟安卓系统界面,畅游虚拟... 你有没有想过,在电脑上也能体验到安卓系统的流畅与便捷呢?没错,这就是今天我要跟你分享的神奇小玩意——...
安卓系统的开发团队,谷歌开发团... 你知道吗?在科技的世界里,有一个团队可是默默无闻地创造了无数奇迹,他们就是安卓系统的开发团队。这个团...
俄语流利说安卓系统,轻松掌握俄... 你有没有想过,学习一门新语言竟然可以变得如此轻松有趣?没错,我要给你安利一款神器——俄语流利说安卓系...