前端手写(十五)——手写new的过程

news/2024/11/24 20:37:29/

一、写在前面
我们如果想要手写new的实现过程,就必须要明白,当我们对一个构造函数执行new操作时,到底干了什么。

1、创建一个新对象。
2、让这个新的对象的原型指向该构造函数的原型对象。
3、执行构造函数,并且将构造函数指向新的对象。
4、拿到构造函数最后返回的结果,判断是否是对象或者函数,如果是的话,则直接
返回。如果不是则返回新创建的对象。

二、手写过程

function createNew(con) {let result = Object.create(con.prototype)let args = [].slice.call(arguments, 1)let ret = con.apply(result, args) return ((typeof ret === 'object' && ret !== null) || typeof ret === 'function') ? ret : result
}
function Person(name, age, score) {this.name = namethis.age= agethis.score = scorereturn {name:this.name}
}let rest = createNew(Person, 'dmc', 21, 100)
console.log(rest)

http://www.ppmy.cn/news/139281.html

相关文章

前端手写(三)——手写深拷贝

一、写在前面 深拷贝就是对对象的深度拷贝,假如我们对象中的字段值任然是对象,如果使用浅拷贝,则只能拷贝对象的地址。实现深拷贝存在三种方法: 1、使用JSON.stringify和JSON.parse方法 2、手写一个深拷贝函数。 3、使用第三方库lodash。 下面…

FS162液晶手写板擦写专用芯片

特性 FEATURES应用 APPLICATIONS技术指标 SPECIFICATIONS参数 最小值 典型值 最大值 单位温度范围 -25 25 85 ℃工作电压 2.2 3.0 5.0 V擦写电压 25 40 V待机电流 0.01 0.05 uA工作电流 3 20 mA● 擦写脉冲电压可调(外置调压电阻)工作电压范围宽&#xf…

印象智能手写板体验:低成本手写方案

电子时代有好多人还保持着手写记录的习惯,当然要保证信息安全的话,还是把手写文字转化为电子笔记更稳妥。目前有这几种解决方案:最简单的,在纸上记录后用手机扫描,然后 OCR 识别为电子格式;或者买一个电子纸…

手写数字识别(1)

#3.6.1 MNIST数据集 MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张,这些图像可以用于学习和推理。MNIST数据集的一般使用方法是,先用训练图像进行学习,再用学习到的模型度量能在多大程度上对测试图像进行…

OCR手写字体生成数据

简述: 根据CASIA的HWDB1.X的手写字符生成了一些带有字符级标注、行级别标注的文本数据,分享给需要的同学。 生成基于不同人的字体、字体大小、行间字体间隔、旋转角度、文本布局的文字贴图。 生成素材:共65种贴图背景, 由420位手写…

【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const 修饰指针,指针和数组,指针和函数

文章目录 1. 定义和使用2. 所占内存空间3. 空指针4. 野指针5. const 修饰指针6. 指针和数组7. 指针和函数 1. 定义和使用 数据类型 * 变量名; 指针的作用是,可以通过指针间接访问内存。 内存编号是从 0 开始记录的,一般用十六进制数字表示。可以利用指…

Hibernate框架【四】——基本映射——多对一和一对多映射

系列文章目录 Hibernate框架【三】——基本映射——一对一映射 基本映射——多对一和一对多映射 系列文章目录前言一、多对一映射是什么?1.案例:现在有两个实体User实体和Group,其中多个User属于一个Group,表现出多对一的关系。①…

Nginx通过用户IP获取所在国家及地理位置

文章目录 前言一、GeoLite2-Country是什么?二、使用步骤2.1 下载GeoLite2-Country数据库文件,并导入Nginx2.2 配置Nginx模块2.3 使用变量来获取国家信息2.4 验证配置 总结 前言 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。它最初设计目的是…