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 相关文章推荐
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
Bootstrap学习笔记之js组件(4)
Jun 12 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
详解tween.js的使用教程
Sep 14 Javascript
在 Node.js 中使用原生 ES 模块方法解析
Sep 19 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
详解用async/await来处理异步
Aug 28 Javascript
vue中使用极验验证码的方法(附demo)
Dec 04 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
Feb 01 Javascript
Webpack中SplitChunksPlugin 配置参数详解
Mar 24 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
Element Rate 评分的使用方法
Jul 27 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的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
深入密码加salt原理的分析
2013/06/06 PHP
php构造函数实例讲解
2013/11/13 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
意大利男装网店:Vrients
2019/05/02 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
一道Delphi上机题
2012/06/04 面试题
英语感恩演讲稿
2014/01/14 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
民间借贷被告代理词
2015/05/23 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
Python3的进程和线程你了解吗
2022/03/16 Python
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python