web前端面试-- 手写原生Javascript方法(new、Object.create)
web面试题
本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-)
web面试题专栏:点击此处

手动实现Object.create
通过Object.create,可以联想到之前讲的JS的7种继承方式之一 原型式继承。
实现
function myCreate(obj) {function Fn() { }Fn.prototype = obj;return new Fn();
}
测试
var obj = { a: 1, b: 2 }
var obj1 = myCreate(obj)
console.log("obj1:", obj1);
console.log("obj1.a:", obj1.a);var obj2 = Object.create(obj)
console.log("obj2:", obj2);
console.log("obj2.a:", obj2.a);

new操作符
- 新建一个空对象
- 将对象的原型__proto__ 指向Fn的prototype
- 运行构造函数,并且通过.call 修改函数的作用域,指向obj
- 返回构造函数生成的对象,如果不是对象,则返回obj
实现
function myNew(Fn,...args){let obj = Object.create(null);obj.__proto__ = Fn.prototype;let result = Fn.call(obj,...args);return result instanceof Object ? result : obj;
}
测试
function Fruits(name, price) {this.name = name;this.price = price;this.sayName = function () {console.log(`我是水果:${this.name}`);};this.sayPrice = function () {console.log(`${this.name}的价格:${this.price}...`);};return {sayName: () => {console.log(`我是水果:${this.name}`);},sayPrice: () => {console.log(`${this.name}的价格:${this.price}...`);},};
}let banana = new Fruits("香蕉", 10);
banana.sayName();
banana.sayPrice();
console.log(banana);function myNew(Fn, ...args) {let obj = Object.create(null);obj.__proto__ = Fn.prototype;let ret = Fn.call(obj, ...args);return ret instanceof Object ? ret : obj;
}let banana2 = myNew(Fruits, "香蕉2号", 20);
banana2.sayName();
banana2.sayPrice();
console.log(banana2);
未完待续…
相关文章:
web前端面试-- 手写原生Javascript方法(new、Object.create)
web面试题 本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 手动实现Object.create 通过Object.create&#…...
C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 滑动窗口 题目 给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1 。每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包…...
目标检测YOLO实战应用案例100讲-基于YOLOv5的航拍图像旋转目标检测
目录 前言 国内外研究历史与现状 目标检测技术的研究历史与现状...
H5前端开发——BOM
H5前端开发——BOM BOM(Browser Object Model)是指浏览器对象模型,它提供了一组对象和方法,用于与浏览器窗口进行交互。 通过 BOM 对象,开发人员可以操作浏览器窗口的行为和状态,实现与用户的交互和数据传…...
stable diffusion如何解决gradio外链无法开启的问题
问题确认 为了确认gradio开启不了是gradio库的问题还是stable diffusion的问题,可以先执行这样一段demo代码 import gradio as grdef greet(name):return "Hello " name "!"demo gr.Interface(fngreet, inputs"text", outputs&q…...
SpringMvc-面试用
一、SpringMvc常用注解 1、修饰在类的 RestController RequestMapping("/test")RestController是什么?其实是一个复合注解 Controller //其实就是Component ResponseBody //独立的注解 public interface RestController {}RequestMapping 也可以认…...
并发编程 # 3
文章目录 一、进程和线程的比较二、GIL全局解释器锁1.引入2.Python解释器的种类结论:在CPython解释其中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势。得出结论:GIL锁就是保证在同一时刻只…...
ESP32C3 LuatOS TM1650①驱动测试
合宙TM1650驱动资料 TM1650.lua源码 引脚连接 TM1650ESP32C3SCLGPIO5SDAGPIO4 下载TM1650.lua源码,并以文件形式保存在项目文件夹中 驱动测试源码 --注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION …...
TCP为什么需要三次握手和四次挥手?
一、三次握手 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备 过程如下ÿ…...
【C++】一些C++11特性
C特性 1. 列表初始化1.1 {}初始化1.2 initializer_list 2. 声明2.1 auto2.2 typeid2.3 decltype2.4 nullptr 3. STL3.1 新容器3.2 新接口 4. 右值引用5. 移动构造与移动赋值6. lambda表达式7. 可变参数模板8. 包装器9. bind 1. 列表初始化 1.1 {}初始化 C11支持所有内置类型和…...
leetcode 647. 回文子串、516. 最长回文子序列
647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成&#…...
Vue Router 刷新当前页面
Vue项目, 在实际工作中, 有些时候需要在 加载完某些数据之后对当前页面进行刷新, 以期 onMounted 等生命周期函数, 或者 数据重新加载. 总之是期望页面可以重新加载一次. 目前总结有三种途径可实现以上需求: 一, reload 直接刷新页面 window.location.reload(); $router.go(…...
lstm 回归实战、 分类demo
预备知识 lstm 参数 输入、输出格式 nn.LSTM(input_dim,hidden_dim,num_layers); imput_dim 特征数 input:(样本数、seq, features_num) h0,c0 (num_layers,seq, hidden_num) output: (样本数、seq, hidden_dim) 再加一个全连接层,将 outpu…...
实践DDD模拟电商系统总结
目录 一、事件风暴 二、系统用例 三、领域上下文 四、架构设计 (一)六边形架构 (二)系统分层 五、系统实现 (一)项目结构 (二)提交订单功能实现 (三࿰…...
`SQL`编写判断是否为工作日函数编写
SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…...
零信任身份管理平台,构建下一代网络安全体系
随着数字化时代的到来,网络安全已成为企业和组织面临的一项重要挑战。传统的网络安全方法已经无法满足不断演变的威胁和技术环境。近期,中国信息通信研究院(简称“中国信通院”)发布了《零信任发展研究报告( 2023 年&a…...
《数据结构、算法与应用C++语言描述》使用C++语言实现链表队列
《数据结构、算法与应用C语言描述》使用C语言实现链表队列 定义 队列的定义 队列(queue)是一个线性表,其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾(back或rear),删除元素的那一端称…...
RT-Thread学习笔记(四):RT-Thread Studio工具使用
RT-Thread Studio工具使用 官网详细资料实用操作1. 查看 RT-Thread RTOS API 文档2.打开已创建的工程3.添加头文件路径4. 如何设置生成hex文件5.新建工程 官网详细资料 RT-Thread Studio 用户手册 实用操作 1. 查看 RT-Thread RTOS API 文档 2.打开已创建的工程 如果打开项目…...
【计算机网络笔记】OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
RabbitMQ高级知识点
以下是一些 RabbitMQ 的高级知识点: 1. Exchange: RabbitMQ 中的 Exchange 是消息路由器,用来接收消息并且转发到对应的 Queue 中。Exchange 有四种类型:Direct Exchange、Fanout Exchange、Topic Exchange 和 Headers Exchange。…...
CILQR:自动驾驶约束优化的突破性算法实现指南 [特殊字符]
CILQR:自动驾驶约束优化的突破性算法实现指南 🚗 【免费下载链接】Constrained_ILQR 项目地址: https://gitcode.com/gh_mirrors/co/Constrained_ILQR 在自动驾驶技术快速发展的今天,约束迭代线性二次调节器(Constrained …...
ITSM系统中的ITIL流程为什么越做越慢?IT服务台正在被“过度设计”拖累
一、流程越标准,为什么效率却越低?在企业IT管理升级的过程中,引入ITIL流程几乎是一种“共识”。作为一套成熟的方法论,它为IT服务管理提供了清晰的框架:事件管理、问题管理、变更管理、服务请求管理等,每一…...
MetaComputing AI PC with Framework Laptop 13 X OpenClaw系列二:Shopify订单统计
前情回顾:https://metacomputing.io/blogs/news/metacomputing-ai-pc-with-framework-laptop-13-openclaw-part-1-building-an-intelligent-discord-bot 上次使用OpenClaw打造了Discord智能聊天机器人,体验非常丝滑!这次我们把OpenClaw和Sho…...
革命性转换工具:一键将Markdown转为专业PPT的终极方案
革命性转换工具:一键将Markdown转为专业PPT的终极方案 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 还在为技术演示文稿的制作而烦恼吗?md2pptx,这款开源神器能够…...
3分钟搞定Elsevier投稿追踪:这款免费Chrome插件让你告别焦虑等待
3分钟搞定Elsevier投稿追踪:这款免费Chrome插件让你告别焦虑等待 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为论文投稿后的漫长等待而焦虑吗?每天刷新Elsevier系统查看审稿状态&…...
MySQL存储过程如何实现循环打印日志_调试信息输出技巧
MySQL存储过程调试首选建临时日志表INSERT记录,或用SELECT CONCAT输出(仅开发环境手动调用有效);禁用SIGNAL抛异常打日志,因其中断执行且低版本不支持;循环内应批量拼接日志再插入以提升性能。MySQL存储过程…...
深入理解Hash冲突:两个不相等的对象能否拥有相同的HashCode?
深入理解Hash冲突:两个不相等的对象能否拥有相同的HashCode? 在Java、Python等编程语言中,哈希表(HashMap、HashSet等)是极为常用的数据结构。而哈希码(hashCode)作为哈希表的核心概念ÿ…...
终极5个驱动清理技巧:如何彻底解决Windows系统卡顿问题
终极5个驱动清理技巧:如何彻底解决Windows系统卡顿问题 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您的Windows电脑是否变得越来越慢?系统盘空间莫名其妙地减…...
百度网盘限速破解:3分钟学会高速下载的实用技巧
百度网盘限速破解:3分钟学会高速下载的实用技巧 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗?每次看着进度条缓慢…...
Claude Design发布:3个核心能力让设计到代码全程自动化,Adobe和Figma股价应声下跌
大家好,我是苍一,一个干了13年的后端开发,正在探索AI编程,从产品到开发的全生命周期最佳实践,如果您感兴趣,欢迎关注👇,看我如何自我革命。Anthropic旗下实验室刚刚推出了一款名为Cl…...
