javascript 属性检测

本文介绍了JavaScript中三种检查对象属性的方法:in运算符、hasOwnProperty方法及!==undefined表达式,并通过实例对比了它们的区别。

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

概述

javascript对象可以看做属性的集合,我们经常会检测集合中成员的所属关系----判断某个对象是否存在某属性(成员变量或方法)。我们可以通过in运算符,hasOwnPreperty和propertyIsEnumerable()方法来检测。

in运算符

书写格式为:属性(字符串) in 对象。该检测会检测对象自由属性,以及继承属性。

	var a={x:''};
	var x='x' in a; //x=>true
	var y='y' in a; //y=>false
	var t='toString' in a; t=>true

a继承自object类并存在自有属性x,所以x=true,y=false。因为所有类继承自object所以a会存在object中的toString方法,所以t=true.

hasOwnProperty方法

书写格式为对象.hasOwnProperty(属性名),其中该方法为in运算符不同,他会将继承属性刨除在外

	var a={x:''};
	var x=a.hasOwnProperty("x"); //x=>true
	var y=a.hasOwnProperty("y"); //y=>false
	var t=a.hasOwnProperty("toString"); //t=>false
a继承自object类并存在自有属性x,所以x=true,y=false。因为toString为父类方法,则t返回false

!==undefined

书写可是为 对象.属性!==undefined,但其中也会存在一些局限性,该方法无法区分存在属性但属性值为undefined和不存该属性。

	var a={x:undefined};
	var x1=a.x!==undefined; //x1=>false 属性存在但值为undefined
	var x2="x" in a; //x2=>true 属性存在
	delete a.x;
	var x3= 'x' in a;//x3=>false 属性不存在
	var y1=a.y!==undefined; //y1=>fasle 属性不存在
	var y2='y' in a; //y2=>false 属性不存在


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值