JS中检测对象是否含有某种属性

本文总结了JavaScript中检测对象是否含有特定属性的三种方法:直接访问、in运算符及hasOwnProperty()方法,并探讨了它们的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS中检测对象是否含有某种属性

判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。

1、点( . )或者方括号( [ ] )加粗样式

> 			// 创建对象
>         var obj = { name : 'fortune'}
> 
> 
>         // 用 .  的方式比较
>         obj.name                    //fortune
>         obj.noProperty              //undefined
> 
>         // 用 [ ] 的方式比较
>         obj['name']                 // fortune
>         obj['noProperty']           // undefined
> 
>         //    获取原型链上面的toString方法
>         obj.toString                // toString() { [native code] }
>         obj['toString']             // toString() { [native code] }
>
>		 // 赋值为undefined的值
>      	 obj['name'] = undefined;
>        obj['name']                 //undefined

我们可以利用我们可以利用没有的属性会等于undefined ,所以我们可以这样判断 Obj.x !== undefined   
但是我们会遇到有值等于undefined的情况,所以看下一种方式

二、in 运算符
  MDN 上对in运算符的介绍:如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。

// 使用格式
// prop in objectName

// prop:一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串)。
// objectName
// 检查它(或其原型链)是否包含具有指定名称的属性的对象。

// 创建对象
var obj = { 
    name : 'fortune',
    sex : 'monster'
}


'name' in obj;          //true
'sex' in obj;           //true
'toString' in obj       //true
'noExist' in obj        //false
'noAttribute' in obj    //false 
undefined in obj        //false	

这种方式比较方便简洁,返回值也是Boolear,而且也解决了场景为undefined的情况下

但是这种方式会判断原型链上面的属性所以我们得分不同场景使用
这时候我们可以用hasOwnProperty()

三、hasOwnProperty()

  		// 使用方法
    	 Object.hasOwnProperty(parameter)
         Object: 对象
         parameter: 需要判断的属性名

        //创建对象
        var hasObj = {
            name : 'fortune'
        }

        hasObj.hasOwnProperty('name')           //true
        hasObj.hasOwnProperty('noExist')        //false
        hasObj.hasOwnProperty('toString')       //false

当我们使用hasObj.hasOwnProperty(‘toString’) 判断原型链上的属性是false,这就并不会判断非自身的属性了
 
总结
以上就是三种检测对象是否含有某种属性的方法,我们要根据不同场景使用。

更多请点击我的博客

推荐Vue中的打包配置引用路径的和背景图片路径问题(详细)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值