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

news2024/9/23 11:15:18

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() 的行为对于正确解答这道题目至关重要。你答对了吗?欢迎在评论区分享你的答案和见解!

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务CI/CD实践(四)Jenkins部署及环境配置

微服务CI/CD实践系列: 微服务CI/CD实践(一)环境准备及虚拟机创建 微服务CI/CD实践(二)服务器先决准备 微服务CI/CD实践(三)gitlab部署及nexus3部署 微服务CI/CD实践(四&#xff09…

ClickHouse的安装教程

ClickHouse的安装教程 文章目录 ClickHouse的安装教程写在前面准备工作关闭防火墙CentOS 取消打开文件数限制安装依赖CentOS 取消 SELINUX 单机安装在 **node01** 的/opt/software 下创建 clickhouse 目录将下载的文件上传到 node01 的 /opt/software/clickhouse 目录下将安装文…

MFC工控项目实例之九选择下拉菜单主界面文本框显示菜单名

承接专栏《MFC工控项目实例之八选择下拉菜单添加打钩图标》 1、在主界面添加一个组合框和一个静态文本框。 2、在SEAL_PRESSUREDlg.cpp文件中添加代码 BOOL CSEAL_PRESSUREDlg::OnInitDialog() {CDialog::OnInitDialog(); ... GetDlgItem(IDC_STATIC_TYPNAME)->SetFont(&a…

通用大模型应用研究重点六:AgentOS

智能体:一个能够自主感知环境、做出决策并执行行动的系统。具备规划思考能力、记忆能力以及使用工具函数的能力,能自主完成给定任务的计算机程序。 智能体的关键组成部分包括: 规划(Planning):智能体能够将…

(二)、软硬件全开源智能手表,可全面高精度采集生命体征数据,进行健康检测。(HealthyPi Move)

HealthyPi Move是一款开放式硬件设备,可让您高精度地跟踪所有生命体征。它不仅仅是另一款带有心率监测器的智能手表,它还是手腕上的完整生命体征监测和记录设备,可以测量心电图(ECG)、光电容积脉搏波 (PPG)、SpO₂、血压(基于手指)、EDA/GSR、…

Clobotics 计算机视觉场景存储实践:多云架构、 POSIX 全兼容、低运维的统一存储

Clobotics 是一家将计算机视觉和机器学习技术应用于风电以及零售行业的企业。在风电行业,Clobotics 利用无人机对风力发电机叶片进行检查,显著降低了对人工作业的依赖。在零售领域,公司通过分析捕获的包装商品图像来提供基于实时数据的洞察&a…

Java-数据结构-ArrayLis与线性表 (๑╹◡╹)ノ“““

目录: 一、List的简单的介绍: 二、线性表: 三、顺序表: 1、基本代码: 2、操作代码: display()方法: add(int data)方法: add(int pos,int data)方法: contains(i…

大模型企业应用落地系列》基于大模型的对话式推荐系统》对话推荐系统技术架构

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 大模型企业应用落地系列全貌基于大模型的对话式推荐系统》技术架…

SpringWeb后端开发-登录认证

Author:Dawn_T17🥥 目录 登录功能 基础登录 登录校验 一、会话技术 1.基于 Cookie 和 Session 的传统会话技术(传统) 2.基于 Token 的会话技术(如 JWT)(主流)​ JWT 二、过滤器(Filter) 具体代…

《JavaEE进阶》----1.<JavaEE进阶可以学到什么>

本篇博客会讲到 一、JavaEE进阶学习内容: 1.框架的学习:Spring、Spring Boot、Spring MVC、MyBatis 2.大项目实践 3.源码阅读 二、JavaEE简介 B/S架构web开发流程 web前端开发(了解) web后端开发(重点) 三、…

properties文件提示未引用

问题描述 以前用的好好的项目,今天突然打开就发现idea不识别spring配置信息显示未引用,如果config代码中引入的配置却可以高亮显示,然后输入spring相关的配置,文件是没有提示的。经过研究发现是spring相关的插件被关闭了。效果如下 解决方法 启用三个插件spring Boot,Sp…

Idea发布springboot项目无法识别到webapp下面的静态资源

问题: Idea发布springboot项目无法识别到webapp下面的静态资源 访问报错404 解决办法: 修改之后重新构建,访问成功

Web3开发与安全:6个月高效学习路径

学习计划概览 总时长:6个月每周学习时间:10-15小时目标:掌握 Solidity 智能合约开发,并具备基本的智能合约安全审计能力。 第一阶段:基础准备(第1-2周) 1. 区块链基础(1周&#x…

workman和GateWay学习笔记

前言 workman支持Udp GateWay是基于workman的二次封装,更适合长链接场景 windows安装workman composer create-project workerman/webman windows运行workman cd webman php windows.php windows访问 http://ip地址:8787 将workman引入thinkphp框架理念

4000字三合一!Stata、SPSS、MATLAB实现多元线性回归详解!

参加数学建模的小伙伴要注意了:多元线性回归几乎是所有分析方式里面最核心、最常用、最全面的模型,博主本科大致参加了10次数模,还有一次正大杯市场调研赛,其中获得拿得出手的奖有9次,有5次都用到了多元线性回归——至…

用Python在PDF文档中创建动作

PDF格式因其跨平台兼容性和丰富的功能集而成为许多行业中的首选文件格式。其中,PDF中的动作(Action) 功能尤为突出,它允许开发者嵌入交互式元素,如链接、按钮或是更复杂的脚本,从而显著提升文档的互动性和功…

c++vscode多文件实现通讯录管理系统

cvscode多文件实现通讯录管理系统 作为c入门级别的实战项目,此通讯管理系统项目不仅仅是对c入门阶段学习成果的检验,也是对c基础知识的回顾,体会c在实战制作中的思路,是入门c单文件实现通讯录系统的改进 一、多文件通讯录管理系统简介 系统需…

JAVA—多线程

关于线程以及多线程的学习,包括创建和常用方法还有解决线程安全的措施,最后学习线程池和了解并发和并行,对于悲观锁和乐观锁的部分没有学习 目录 1.线程概述 2.多线程的创建 (1)继承Thread类 (2&#…

【GPT】基于GPT_API_free做一个自己的gpt

最终效果 项目背景 秉持能免费就绝不花钱的原则,基于github项目GPT_API_free获取的gpt apikey。下面是简单的代码 import json import os import requestsopenai_url os.getenv("openaiproxy") openai_apikey os.getenv("openaikey") # 初始…

[图解]SysML和EA建模住宅安全系统-活动作为块

1 00:00:00,210 --> 00:00:04,360 下一个步骤是识别潜在的失效 2 00:00:06,850 --> 00:00:11,150 这里它是用一个块定义图来表达的 3 00:00:12,150 --> 00:00:16,790 图17.21,失效模式识别和因果依赖 4 00:00:19,110 --> 00:00:22,400 但是这个块定义…