关于for in 循环会遍历原型链上的属性的问题

关于for in 循环会遍历原型链上的属性的问题

for in可遍历原型链上扩展的属性,Object.keys() 只遍历自身属性

1.使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:

javascript 复制代码
Object.prototype.say="cgl";   // 修改Object.prototype  
    var person ={ age: 18 };
    for (var key in person) {
        console.log(key, person[key]);//这里用person.key得不到对象key的值,用person[key] 或者 eval("person."+key);
    }   //结果: age 18 say cgl

2.只遍历对象自身的属性,而不遍历继承于原型链上的属性,使用hasOwnProperty 方法过滤一下。

复制代码

javascript 复制代码
Object.prototype.say="gwl";
var person ={
	age: 18
};
for (var key in person) {
	if(person.hasOwnProperty(key)){
		console.log(key, eval("person."+key));
	}
} //结果:age 18
相关推荐
图扑软件3 分钟前
下篇・换墨|主题/多语言/移动端,一套组件全覆盖
前端·javascript·ui·性能优化·数据可视化
程序员老赵7 分钟前
Docker 部署 TeX Live:轻松搭建 LaTeX 论文排版编译平台
前端·docker·latex
Zhu75811 分钟前
部署安全的pg数据库,搭配pgadmin实现web界面管理
前端·数据库·安全
matlab代码14 分钟前
基于matlab PCA人脸识别系统【源码63期】
开发语言·matlab
Terra.K14 分钟前
后端开发阶段性总结
java·开发语言·后端
杉氧16 分钟前
打破边界(二):在 React Native 中嵌入原生 UI 组件 (Native UI Components)
android·前端·react native
学逆向的17 分钟前
PE——合并节
开发语言·网络安全·pe
是个西兰花20 分钟前
C++11:线程库与线程安全问题
开发语言·c++
点心的游戏开发世界22 分钟前
GDScript 入门笔记(十三):字符串操作
开发语言·笔记·游戏引擎·godot
沧沧凉凉31 分钟前
两个小时,AI 把我 2018 年那个 Unity 版保卫萝卜搬进了浏览器
前端·游戏·ai编程