关于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
相关推荐
deng-c-f6 分钟前
Linux C/C++ 学习日记(53):原子操作(二):实现shared_ptr
开发语言·c++·学习
90后的晨仔9 分钟前
🛠️ 修复 macOS 预览乱码 PDF 的终极方案:用 Python 批量“图像化”拯救无法打开的 PDF
前端
嚣张丶小麦兜14 分钟前
Vue常用工具库
前端·javascript·vue.js
wanghowie16 分钟前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试
Cricyta Sevina22 分钟前
Java IO 基础理论知识笔记
java·开发语言·笔记
MyBFuture25 分钟前
C#接口与抽象类:关键区别详解
开发语言·c#·visual studio
晨晖21 小时前
简单排序c语言版
c语言·开发语言
MediaTea1 小时前
大学 Python 编程基础(合集)
开发语言·python
墨雪不会编程1 小时前
C++ string 详解:STL 字符串容器的使用技巧
java·开发语言·c++
悲喜自渡7211 小时前
Python 编程(gem5 )
java·linux·开发语言