JS 判断对象中是否包含某属性

一.通过点或者方括号

我们在使用对象的时候,通过点或方括号可以获取对象的属性值,如果该对象自身不存在这个属性,就会返回undefined。

	var obj={
	    name:"小破船",
	    doWhat:"借箭"
	};
	console.log(obj.name);//小破船
	console.log(obj.age);//undefined
	console.log(obj['age']);//undefined

我们可以根据 obj.属性名 !== undefined 的返回值 来判断obj是否有该属性,不过这个方法的局限性在于,如果该属性的属性值本身就是undefined就无法进行正确判断。

二.in运算符

如果指定的属性在指定的对象或其原型链中,则in 运算符返回true反之返回false;

	var obj={
	    name:"小破船",
	    doWhat:"借箭",
	    ambiguity:undefined
	};
	console.log('name' in obj);//true
	console.log('age' in obj);//false
	console.log('ambiguity' in obj);//true

即使出现obj里的属性的属性值本身为undefined的情况,使用in运算符也可以正常判断。弊端就是,无法判断是自身的属性还是原型链上的属性。

三.使用hasOwnProperty()方法

hasOwnProperty()方法返回一个布尔值,判断对象的自身属性中是否包含指定的属性。

	var obj={
	    name:"小破船",
	    doWhat:"借箭",
	    ambiguity:undefined
	};
	console.log(obj.hasOwnProperty('name'));//true
	console.log(obj.hasOwnProperty('age'));//false
	console.log(obj.hasOwnProperty('toString'));//false

hasOwnProperty()方法只会判断对象自身的属性中是否包含指定的属性,这样就结局的in运算符的局限。不过该方法也是有局限性的,因为他只能判断自身属性。

三种方式优缺点各有不同,结合场景使用,会更好哦!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值