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 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
JS实现移动端触屏拖拽功能
Jul 31 Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 01 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
原生JS运动实现轮播图
Jan 02 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
PHP如何自定义函数
2016/09/16 面试题
环境工程大学生自荐信
2013/10/21 职场文书
本科毕业生自我鉴定
2013/11/02 职场文书
店面销售职位的职责
2014/03/09 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
员工工作能力评语
2014/12/31 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
酒店前台辞职书
2015/02/26 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android