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 Trim去除字符串首尾空字符的实现方法说明
Feb 11 Javascript
浅谈javascript 迭代方法
Jan 21 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
Angular表单验证实例详解
Oct 20 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
JavaScript实现动态增删表格的方法
Mar 09 Javascript
JS实现评价的星星功能
Aug 20 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 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源码之 ext/mysql扩展部分
2009/07/17 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
PHP中的事务使用实例
2015/05/26 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
PyTorch预训练的实现
2019/09/18 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
浅析Python面向对象编程
2020/07/10 Python
Python列表推导式实现代码实例
2020/09/09 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
给医务人员表扬信
2014/01/12 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
写给老师的感谢信
2015/01/20 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书