前端面试题每日一练,测测你对JavaScript对象继承和 Object.entries() 的理解

3de23ded097e88c050d6edfd309f8c67.png

今天的挑战题目涉及到JavaScript中的原型链 (prototype chain) 和 Object.entries() 方法的使用。我们将通过一个对象继承的例子来探索如何使用 Object.entries() 获取对象的自身可枚举属性,并进行处理。让我们一起分析这段代码,看看它会输出什么以及为什么。

代码解析

首先,代码定义了两个对象 obj1obj2,并设置了一个原型链关系:

const obj1 = { a: 1 };
const obj2 = Object.create(obj1);
obj2.b = 2;
  • obj1 是一个包含属性 a 的对象,其值为 1

  • obj2 通过 Object.create(obj1) 创建,并以 obj1 作为其原型。这意味着 obj2 继承了 obj1 的属性 a

  • obj2 上,我们显式地添加了一个属性 b,其值为 2

此时,obj2 的属性有两个来源:

  • 自身属性 b,值为 2

  • 继承自原型对象 obj1 的属性 a,值为 1

接下来,代码使用 Object.entries() 方法获取 obj2 的可枚举属性,并将每个属性的键和值进行处理:

const result = Object.entries(obj2).map(([key, value]) => key + value);

理解 Object.entries()

Object.entries(obj2) 返回一个包含 obj2 所有自身可枚举属性的键值对数组。注意,继承自原型链的属性不会包含在 Object.entries() 返回的数组中

对于 obj2Object.entries(obj2) 只会返回 [['b', 2]],因为 bobj2 的自身属性。

处理 Object.entries() 的结果

代码通过 map 方法对 Object.entries() 返回的数组进行处理:

  • 对于 ['b', 2],它将键和值拼接成字符串 'b2'

因此,result 数组将包含 ['b2']

输出结果

最终,console.log(result) 会输出 ['b2']

console.log(result); // 输出 ['b2']

结束

这道题目展示了 Object.entries() 方法如何处理对象的自身可枚举属性,同时忽略继承自原型链的属性。理解对象的属性继承和 Object.entries() 的行为对于正确解答这道题目至关重要。你答对了吗?欢迎在评论区分享你的答案和见解!

每天一道面试题,帮助你提高编程技能,不断进步!记得关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值