Javascript学习笔记——6.4 检测属性

判断一个对象是否包含某个属性

in运算符

左侧是属性名(字符串),右侧是对象

var o ={x:1}
'x' in o //true
'y' in o //false
'toString' in o //true o继承了toString

hasOwnPreperty()

判断是否有自有属性

var o ={x:1}
o.hasOwnProperty('x') //true
o.hasOwnProperty('y') //false
o.hasOwnProperty('toString') //false,toString是继承属性

propertyIsEnumerable()

必须是自有属性而且是可以枚举的,才返回true。

Object.prototype.propertyIsEnumerable('toString') //false,不可枚举
var o = Object.create({x:1})
o.propertyIsEnumerable('x') //false 继承属性
o.y = 2
o.propertyIsEnumerable('y') //true

与undefined比较

访问不存在的属性会返回undefined,可以利用这一点来判断属性是否存在,注意要用!==

var o = {x:1}
o.x !== undefined //true o包含属性x
o.y !== undefined //false o不包含属性y
o.toString !== undefined //true o继承toString

但有一个场景无法使用这种方式,就是对象的属性的值本身就是undefined

var o = {x:undefined}
o.x !== undefined //false 但是o包含属性x
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:clearbug原文地址:http://www.cnblogs.com/craftsman-gao/p/48...
    IT程序狮阅读 854评论 1 8
  • 序 从最近的js入门系列的阅读量逐步递减,观众老爷的兴趣也不再能够接受一些细节性的地方深度挖掘,让我有了一些思考。...
    zhaolion阅读 1,702评论 5 19
  • 第三章 类型、值和变量 1、存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值...
    坤少卡卡阅读 705评论 0 1
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,865评论 0 5
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,832评论 0 0

友情链接更多精彩内容