关于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
相关推荐
终端鹿5 分钟前
Vue2 迁移 Vue3 避坑指南
前端·javascript·vue.js
leaves falling7 分钟前
C++入门基础
开发语言·c++
huaweichenai8 分钟前
java的数据类型介绍
java·开发语言
进击的尘埃8 分钟前
Signals 跨框架收敛:TC39 提案、Solid、Angular、Preact 的实现差异与调度策略对比
javascript
程序员陆业聪9 分钟前
工程师的瓶颈,已经不是代码了
前端
C羊驼15 分钟前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法
fengfuyao98524 分钟前
CH552多功能音量调节旋钮设计与实现
c语言·开发语言
毛骗导演26 分钟前
@tencent-weixin/openclaw-weixin 源码ContextToken 持久化改造:实现微信自定义消息发送能力
前端·架构
爱丽_26 分钟前
Pinia 状态管理:模块化、持久化与“权限联动”落地
java·前端·spring
xushichao198930 分钟前
实时数据压缩库
开发语言·c++·算法