如何判断一个对象的属性是否存在?

如何判断一个对象的属性是否存在?这个简单:

var obj = { a: 2 }
if (obj.a) {
  console.log('存在');
} else {
  console.log('不存在');
}

如果obj.a的值是undefined呢?那怎么区分是obj.a不存在,还是obj.a等于undefined呢?

我们知道有一个操作符in,可以在不访问属性值的情况下判断对象中是否存在这个属性:

var cat = {
  color: undefined
}

Object.prototype.name = '小喵'

console.log('color' in cat) // true
console.log('name' in cat) // true

console.log(cat.hasOwnProperty('name'))  // false

in操作符会检测属性是否存在对象及其原型链中,如果只是判断当前对象是否存在某个属性,那么可能会得到你意想不到的结果。不过幸亏还有一个hasOwnProperty,它只检测属性是否存在当前对象中。

除了hasOwnProperty,还有一个效率比较低的方法:

var cat = {
  color: undefined
}

Object.prototype.name = '小喵'

console.log('color' in cat) // true
console.log('name' in cat) // true

console.log(cat.hasOwnProperty('name'))   // false

console.log(Object.keys(cat).indexOf('name') > -1) //false

只是想获得所有的可枚举属性列表,用Object.keys还是比较方便的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,196评论 0 13
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,651评论 0 5
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,695评论 1 45
  • 军训还没有结束,室友手机收到来自百度地图的提醒:“明天是晴天,一起晒出健康小麦肌肤。”她扬言要卸载,但还是点击了...
    微Rain阅读 214评论 0 0
  • 曾经骄傲的谁也不低头,可后来,还是学会花言巧语面对不同的狗。 深夜的一天,一位微博网友萌妹子问我:“姐姐,你说他到...
    木子_菇凉阅读 1,340评论 0 1