JS对象属性的检测与获取操作实例分析


Posted in Javascript onMarch 17, 2020

本文实例讲述了JS对象属性的检测与获取操作。分享给大家供大家参考,具体如下:

1.1 in运算符

in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值), 如果包含就返回true,否则返回false

var obj = { p: 1 }
'p' in obj // true
'toString' in obj // true

上面代码中,obj对象上有一个p属性,所以使用in运算符时,得到true,但toString并没有在obj对象上,为什么也返回true呢,这是因为in运算符,不能识别哪些属性是对象自身的,哪些是继承的。因为toString是继承自obj的原型对象,所以会返回true。

1.2 for … in 循环

for … in 循环用来遍历一个对象的全部属性。

var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
 console.log(obj[i]);
}

for … in 循环有两个使用注意点

  1. 它遍历的是对象所有可遍历的属性,会跳过不可遍历的属性。
  2. 它不仅遍历对象自身的属性,还遍历继承的属性。

如果想得到自身的属性,需要结合hasOwnProperty方法,在循环内部判断一下,某个属性是否为对象自身的属性。

var person = { name: '老张' };

for (var key in person) {
 if (person.hasOwnProperty(key)) {
  console.log(key);
 }
}

想要得到自身的属性还有另外两种方法:

es5:

利用Object.getOwnPropertyNames(obj)

var person = { name: '老张' }
var props = Object.getOwnPropertyNames(person)

es6:

利用Object.keys(obj)

var person = { name: '老张' }
var props = Object.keys(person)

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
Mar 06 Javascript
Javascript弹出窗口的各种方法总结
Nov 11 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
微信小程序自定义可滑动日历界面
Dec 28 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 Javascript
Js数组扁平化实现方法代码总汇
Nov 11 Javascript
JS前端模块化原理与实现方法详解
Mar 17 #Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 #Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 #Javascript
用js编写留言板
Mar 17 #Javascript
Vue脚手架编写试卷页面功能
Mar 17 #Javascript
基于JavaScript实现留言板功能
Mar 16 #Javascript
JS实现简易留言板(节点操作)
Mar 16 #Javascript
You might like
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php实现telnet功能示例
2014/04/08 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
PyQt5实现拖放功能
2018/04/25 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
化工专业推荐信范文
2013/11/28 职场文书
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
给领导的检讨书
2014/02/16 职场文书
学生手册评语
2014/05/05 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
使用python创建股票的时间序列可视化分析
2022/03/03 Python
DSP接收机前端设想
2022/04/05 无线电