文档章节

检测对象属性

suna123
 suna123
发布于 2017/08/01 23:12
字数 491
阅读 10
收藏 0

检测对象属性有三种方法:

1.in运算符

如果对象的自有属性或继承属性包含要检测的属性,那么该运算结果返回true

var person = { name: 'w3cplus', age: 7 };
console.log('w3cplus' in person); // => false, 'w3cplus'不是 person的属性
console.log('age' in person); // => true, ‘age’是person的属性
console.log('toString' in person); // => true, 'toString'是person的继承属性

ps:当属性的值不为undefind时,可以用!==判断一个属性是否为undefind。

var person = { name: 'w3cplus', age: 7 }

console.log(person.name !== undefined); // => true, name是person的属性 

console.log(person.w3cplus !== undefined); // => false, w3cplus不是person的属性 console.log(person.toString !== undefined);// => true, toString是person的继承属性
 

2.hasOwnProperty()方法

用来检测给定的属性是否为对象的自有属性,如果是返回true,继承属性它将返回false

var person = { name: 'w3cplus', age: 7 };
console.log('w3cplus' in person); // => false, 'w3cplus'不是 person的属性
console.log('age' in person); // => true, ‘age’是person的属性
console.log('toString' in person); // => true, 'toString'是person的继承属性

3.propertyIsEnumerable()

propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测的属性是自有属性并且这个属性是可枚举性的才返回true。

var person = inherit({ name: 'w3cplus', age: 7 });
person.occupation = 'student'; person.propertyIsEnumerable('occupation'); // => true, occupation是                person的自有属性,可枚举
person.propertyIsEnumerable('age'); // => false, age是person的继承属性,不可枚举 Object.prototype.propertyIsEnumerable('toString');// => false, toString是person的继承属性,不可枚举.

 

ps:遍历对象的属性:for-in

for-in可以在循环体中遍历对象的所有可枚举的属性,包括自带的和继承的属性,对象继承的内置方法不可枚举。把对象的属性赋值给循环变量。

var person = {
    name: 'w3cplus',
    age: 7,
    occupation: 'student'
}

person.propertyIsEnumerable('toString'); // => false,不可枚举

for (prop in person) {
    console.log(prop); // => name, age, occupation
}

 

in,hasOwnProperty(),propertyIsEnumerable()三者的区别:

in:可以检测自有属性和继承属性

hasOwnProperty():只可以检测自有属性

propertyIsEnumerable():只检测自有属性且这些属性要是可枚举的。

满足各自的条件,他们的返回结果都为true,否则为false

 

 

 

 

© 著作权归作者所有

上一篇: vue-router学习
下一篇: node笔记-
suna123
粉丝 3
博文 18
码字总数 8841
作品 0
昌平
网页/平面设计
私信 提问
js 常用标准库内置属性方法汇总

常用Object的属性和方法 创建空Object 创建Object 给对象添加属性 给对象添加多个属性 给对象添加getter 给对象添加setter 返回属性配置(对象) 返回所有属性名(数组) 返回对象原型(对象) 阻止...

ricardohn
2016/12/01
5
0
js笔记三十二之构造函数模式扩展

构造函数模式扩展 在构造函数模式中new Fn()执行, 如果不需要传参, 后面的小括号可以省略: new Fn this的问题: 在类中出现的 this.xxx=xxx 中的this都是当前类的实例, 而某一个属性值(方法)...

uplyw
2018/05/28
0
0
js【Object.prototype.hasOwnProperty()方法】

概述 方法用来判断某个对象是否含有指定的自身属性。 语法 obj.hasOwnProperty(prop) 参数 要检测的属性名称。 描述 所有继承了 的对象都会从原型链上继承到 方法,这个方法可以用来检测一个...

k_k_anna
2015/03/06
0
0
JS第一天

ECMAScript js的标准语法 DOM(html每一个标签对应一个对象) html(控制内容)+css(控制样式)+js(控制行为) html+js 嵌入式 导入(保证了html和js代码解耦) 注释 两种 // / / 标识符 ...

清枫_小天
2016/09/03
0
0
【BS学习】JavaScript总结

概述 使用 语法、关键保留字及变量 数据类型 运算符 流程控制语句 函数 对象和数组 时间与日期 正则表达式 Function类型 变量、作用域及内存 基本包装类型 内置对象 面向对象与原型 匿名函数...

yym15732626210
2018/02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
8分钟前
0
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
34分钟前
2
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
44分钟前
1
0
PHP的学习

PHP变量的命名必须以$符开始,如: $i;$j;$name; $符后面的第一个字符不可以是数字,只能是字母或者下划线(_)。 除了下划线(_)之外,变量中不能出现任何特殊字符,也就是变量只能包含...

墨冥
今天
2
0
一篇文章彻底搞懂Java虚拟机

概念: 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Jav...

骚年锦时
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部