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

javascript学习笔记 专栏收录该内容
32 篇文章 0 订阅

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。适用于只判断自身属性的场景

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值