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

相关内容

热门资讯

专业师傅教你“海港玩十三张到底... 专业师傅教你“海港玩十三张到底有挂吗?其实是有挂(揭秘手机上必赢技巧)是一款可以让一直输的玩家,快速...
专业师傅教你“心悦麻将到底有挂... 您好:心悦麻将确实真的有挂,软件请加QQ群客服咨询:1075075785确实是有挂的,很多玩家在这款...
专业师傅教你“福建十三道到底有... 专业师傅教你“福建十三道到底有挂吗?其实是有挂(揭秘手机上必赢技巧)一、福建十三道AI软件牌型概率发...
专业师傅教你“启航竞技到底有挂... 您好,启航竞技这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785}...
专业师傅教你“边锋陕西麻将到底... 专业师傅教你“边锋陕西麻将到底有挂吗?其实是有挂(揭秘手机上必赢技巧)1、让任何用户在无需AI插件第...
专业师傅教你“旺旺冲击麻将到底... 你好旺旺冲击麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785...
专业师傅教你“老牌人到底有挂吗... 亲,老牌人这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,老牌人的开挂软件,名称叫...
专业师傅教你“皮皮湖南跑胡子到... 自定义皮皮湖南跑胡子系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你...
专业师傅教你“好友圈到底有挂吗... 亲,好友圈这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,好友圈的开挂软件,名称叫...
专业师傅教你“心悦众娱到底有挂... 您好,心悦众娱这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785}...
专业师傅教你“德州牛仔到底有挂... 亲,德州牛仔这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,德州牛仔的开挂软件,名...
专业师傅教你“口袋二人麻将到底... 你好口袋二人麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785...
专业师傅教你“欢乐四喜到底有挂... 您好:欢乐四喜确实真的有挂,软件请加QQ群客服咨询:1075075785确实是有挂的,很多玩家在这款...
专业师傅教你“大唐麻将全集到底... 专业师傅教你“大唐麻将全集到底有挂吗?其实是有挂(揭秘手机上必赢技巧)一、大唐麻将全集AI软件牌型概...
专业师傅教你“PPPoker到... 自定义PPPoker系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你...
专业师傅教你“追梦到底有挂吗?... 专业师傅教你“追梦到底有挂吗?其实是有挂(揭秘手机上必赢技巧)一、追梦AI软件牌型概率发牌机制”必胜...
专业师傅教你“奕福麻将到底有挂... 你好奕福麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】,...
专业师傅教你“丁丁麻将到底有挂... 亲,丁丁麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,丁丁麻将的开挂软件,名...
专业师傅教你“万盛竞技到底有挂... 专业师傅教你“万盛竞技到底有挂吗?其实是有挂(揭秘手机上必赢技巧)是一款可以让一直输的玩家,快速成为...
专业师傅教你“君临天下到底有挂... 您好,君临天下这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785}...