JavaScript学习笔记——判断某个属性是否属于某个对象

本文介绍了JavaScript中判断对象是否包含某属性的四种方法:直接使用.或[]、in运算符、Reflect.has方法以及hasOwnProperty。针对不同场景,如考虑undefined、原型链以及兼容性问题,可以选择合适的方法进行属性检查。
摘要由CSDN通过智能技术生成

1. 直接用.或[]判断

var test = {name : 'lei'}
test.name            //"lei"
test["name"]         //"lei"
// 获取原型上的属性
test["toString"]     //toString() { [native code] }
// 新增一个值为undefined的属性
test.un = undefined

所以,我们可以根据 Obj.x !== undefined 的返回值 来判断Obj是否有x属性。

这种方式很简单方便,局限性就是:不能用在x的属性值存在,但可能为 undefined的场景。 in运算符可以解决这个问题

2. in 运算符

var test = {name : 'lei'}
console.log("in",'un' in test, 'name' in test,'abc' in test);
//in true true false

这种方式的局限性就是无法区分自身和原型链上的属性,在只需要判断自身属性是否存在时,这种方式就不适用了。同时不是所有的浏览器都支持这个语法,存在兼容性问题

3. Reflect.has(obj,name);

Reflect.has方法对应name in obj 中的运算符

var myObject ={foo:1}
//旧写法
'foo' in myObject ;
// 新写法
Reflect.has(myObject ,'foo');

如果第一个参数不是对象Rellect.has和in运算符都会报错

4.hasOwnProperty

test.hasOwnProperty('name')        //true   自身属性
test.hasOwnProperty('age')           //false  不存在
test.hasOwnProperty('toString')    //false  原型链上属性

可以看到,只有自身存在该属性时,才会返回true。适用于只判断自身属性的场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值