【JS】for in循环对象,hasOwnProperty()的作用
2023-09-11 14:16:38 时间
var obj = { name:"echolun", age:"24", sex:"male" }, objName=[], //用来装对象属性名 objVal=[]; //用来装对象属性值 for(var i in obj){ objName.push(i); objVal.push(obj[i]); } console.log(objName,objVal);
需要注意的是,for in循环对象会访问原型链上所有对象属性,看下面。
var obj = { name:"echolun", age:"24", sex:"male" }, objName=[], //用来装对象属性名 objVal=[]; //用来装对象属性值 Object.prototype.game="lastgame"; for(var i in obj){ objName.push(i); objVal.push(obj[i]); } console.log(objName,objVal); }
这里同样是循环对象obj,但是需要注意的是,原型链上我们额外添加的对象game也被循环出来。
那么我们只想循环对应的对象该怎么做呢,这里引入hasOwnProperty()方法,hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false。
说简单点,它能帮你指向你当前循环的对象,而过滤掉原型链上其它对象,因为在工作中我们很难保证其他人是否会修改原型链,这样做会更为保险,那么修改代码。
var obj = { name:"echolun", age:"24", sex:"male" }, objName=[], //用来装对象属性名 objVal=[]; //用来装对象属性值 Object.prototype.game="lastgame"; for(var i in obj){ if(obj.hasOwnProperty(i)) { objName.push(i); objVal.push(obj[i]); } } console.log(objName,objVal); }
看吧,这下就过滤掉game了。
相关文章
- js省市二级联动
- JS框架_(JQuery.js)模拟刮奖
- JS框架_(JQuery.js)圆形多选菜单选项
- JS框架_(coolShow.js)图片旋转动画特效
- JS框架_(JQuery.js)高德地图api
- JS框架_(Popup.js)3D对话框窗口插件
- JS框架_(Vue.js)带有星期日期的数字时钟
- js遍历 子节点 子元素
- JS - 解决引入 js 文件无效的问题
- baguetteBox.js响应式画廊插件(纯JS)
- JS删除数组中某一项或几项的方法汇总
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
- [Cycle.js] Hyperscript as our alternative to template languages
- 动态加载Js代码到Head标签中的脚本
- 让Visual Studio 也支持JS代码折叠 —— 续 [ Visual Studio | Js | ScriptOutline | SmallOutline ]
- Atitit 研发体系 codelib 代码库的建设 目录 1. 概念与组成2 1.1. Java代码2 1.2. Js代码2 1.3. H5 代码 js+css+htm+txt2 1.4.
- webpack最简单的入门教程里bundle.js之运行单步调试的原理解析
- js 在for 循环内加了计数器之后的值变化
- js表达式和运算符
- [网络]_获取内外网IP地址【Auto.js】
- js_jQuery【下拉菜单联动dom操作】
- 〖大前端 - 基础入门三大核心之JS篇④〗- JavaScript中的数据类型之数字类型
- 【华为云技术分享】如何快速实现鲲鹏弹性云服务器Node.js部署和高可用性?
- node.js JS对象和JSON字符串之间的转换
- js里的回调函数
- js 中 forEach 如何跳出循环?
- babel配置项目目录支持转换es6语法,引入非项目目录js后,引入Js转换无效
- js实现图片粘贴上传到服务器并展示
- js 运算符 感叹号后置 是断言
- i18n 和 基于js的网页多语言框架 jquery.i18n的介绍
- JS高级部分
- 【JS高级】js之正则相关函数以及正则对象_02
- 原生js实现随机验证码HTMl-JS