关于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
相关推荐
小酒星小杜7 分钟前
在AI时代下,技术人应该学会构建自己的反Demo地狱系统
前端·vue.js·ai编程
willingli9 分钟前
c语言经典100题 61-70题
c语言·开发语言·算法
我是小疯子6613 分钟前
深入解析C++右值引用与移动语义
java·开发语言·算法
Ethan Wilson16 分钟前
VS2019 C++20 模块相关 C1001: 内部编译器错误
开发语言·c++·c++20
郝学胜-神的一滴18 分钟前
Python数据封装与私有属性:保护你的数据安全
linux·服务器·开发语言·python·程序人生
悟能不能悟20 分钟前
Elastic Stack 中两种主要查询语言 KQL (Kibana Query Language) 和 Lucene 的详细对比和解释。
java·开发语言
kirito707726 分钟前
前端项目架构(基于 monorepo)
前端
去哪儿技术沙龙31 分钟前
Qunar酒店搜索排序模型的演进
前端·架构·操作系统
重铸码农荣光32 分钟前
TypeScript:JavaScript 的“防坑装甲”,写代码不再靠玄学!
前端·react.js·typescript
用户6000718191035 分钟前
【翻译】构建类型安全的复合组件
前端