new`是如何创建对象实例的?

article/2025/9/30 2:04:25

new 是如何创建对象实例的?

1,new操作符做了哪些事情

new操作符的作用:创建对象的实例

用于创建一个用户自定义的对象的实例或者具有构造函数的内置对象的实例

class Person {constructor(name) {this.name = name}
}
// 创建自定义对象的实例
const person = new Person('张三')
// 创建具有构造函数的内置对象的实例
const date = new Date()

在这里插入图片描述

比较直观的,我们new一个构造函数的时候,得到的实例继承了构造函数的属性以及原型上的属性。

以这种方式调用构造函数会经历以下4步:

  • 1,创建一个新的空对象
const obj = {}
  • 2,给这个空对象添加__proto__属性,并将空对象的__proto__指向构造函数的原型
obj.__proto__ = Person.prototype

将空对象的__proto__属性赋值为构造函数的prototype属性,使得通过构造函数创建的所有对象的实例可以共享相同的原型,这意味着同一个构造函数创建的所有对象都继承于一个相同的对象,因此他们都是同一个类的对象

  • 3,调用构造函数Person,并将this绑定到新创建的对象obj
Person.apply(obj)
  • 4,对构造函数的返回值做判断,然后返回对应的值(/返回新对象)
    • 一般是返回第一步创建的空对象
    • 但是当构造函数有返回值的时候,则需要做判断再返回对应的值,是对象类型则返回该对象,是原始类型则返回第一步创建的空对象
function Person (name) {// 1,创建一个新对象,赋予this,这一步是隐性的// let obj = {}// 2,给 this 指向的对象赋予构造属性this.name = name;this.sayHi = function () {console.log('你好' + this.name)}// 3,如果没有手动返回对象,则默认隐性的返回this指向的对象// return this
}
let p1 = new Person('张三')
p1.sayHi()  // 你好张三
2,new的实现及验证说明
function myNew(constructor, ...args) {// 1,创建一个新对象let obj = {}// 2,将这个新对象的__proto__指向构造函数的原型 obj.__proto__ = constructor.prototypeObject.setPrototypeOf(obj, constructor.prototype);// 3,将this指向空对象let res =  constructor.apply(obj, args);// 4,对构造函数的返回值做判断,并返回对应的值return res instanceof Object ? res : obj
}
function Person(name) {this.name = name;
}
let p1 = myNew(Person, '张三')
p1 // {name: '张三'}
p1.constructor === Person // true
p1.__proto__ === Person.prototype // true

一般情况下构造函数并没有返回值,作为函数的情况下,可以有返回值:

function myNew(constructor, ...args) {let obj = {}Object.setPrototypeOf(obj, constructor.prototype);let res =  constructor.apply(obj, args);return res instanceof Object ? res : obj
}
function Person(name) {this.name = name;return {   // 当构造函数返回对象类型的数据的时候,会直接返回这个数据,new操作符无效age: 18}
}
let p1 = myNew(Person, '张三')
p1  // {age: 18}
function myNew(constructor, ...args) {let obj = {}Object.setPrototypeOf(obj, constructor.prototype);let res =  constructor.apply(obj, args);return res instanceof Object ? res : obj
}
function Person(name) {this.name = name;return '你好张三'   // 构造函数返回基础数据类型的时候,则会被忽略
}
let p1 = myNew(Person, '张三')
p1 // {name: '张三'}

看完了,有所收获吗?


http://chatgpt.dhexx.cn/article/Jfx249er.shtml

相关文章

46 使用构造函数创建对象

文章目录 1、JavaScript内置的构造函数2、自定义构造函数3、构造函数中的return关键字 1、JavaScript内置的构造函数 JavaScript提供了Object、String、Number等构造函数,通过“new 构造函数()”即可创建对象。使用new关键字创建对象的过程称为实例化,实…

【数字图像处理Matlab】- 实验二:图像噪声及图像复原

2.1 编程实现:复原由运动模糊高斯噪声造成的退化图像,对比逆滤波、维纳滤波以及最小二乘方滤波方法。 代码如下: I imread(005.bmp); I im2double(I); subplot(3, 3, 1),imshow(I),title(原始图像); IG rgb2gray(I); subplot(3, 3, 2),i…

深度CV基础——图像噪声和滤波

一,图像噪声 1.图像噪声的概念: 图像噪声是图像在获取或是传输过程中受到随机信号干扰,妨碍人们对图像理解及分析处理的信号。很多时候将图像噪声看做多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述, 也…

图像噪声的分类与模型

噪声是干扰和妨碍人类认知和理解信息的重要因素,而图像噪声则是图像中干扰和妨碍人类认识和理解图像信息的重要因素。由于噪声本身具有不可预测性,可以将它当做一种随机误差(这种误差只有通过概率统计的方法来识别)。因此&#xf…

图像噪声认识

噪声,就是在获取有效信息过程中得到的一些冗余或干扰的无用信息,可以是自然现象中客观的存在,也可以是在获取信息的过程中出现误差等干扰而形成,总之就是没用的,但或许会对想要获取的有效信息进行干扰的信息。 图像噪…

(十九)图像噪声

噪声生成 1、图像噪声是图像在获取或是传输过程中受到随机信号干扰,妨碍人们对图像理解及分析处理 的信号。 2、图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产 生图像噪声的主要因素是所用的传输信道受到了噪声的污…

转载:图像噪声的成因分类与常见图像去噪算法简介

本文转载自博客园博主淇淇宝贝:图像的空域噪声以及二维降噪算法介绍 1、图像噪声的成因 图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声&a…

图像噪声介绍

一、背景 随着各种数字仪器和数码产品的普及,图像和视频已成为人类活动中最常用的信息载体,它们包含着物体的大量信息,成为人们获取外界原始信息的主要途径。然而在图像的获取、传输和存贮过程中常常会受到各种噪声的干扰和影响而使图像降质…

图像滤波基础知识:图像与波的关系以及图像噪声知识

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 一、引言 老猿对图像处理基础知识非常缺乏,所以OpenCV-Python的学习进度很慢,很多基础概念和原理的东西花了大量精力去研究和学习,如前面图像的形态变换、最近的仿射…

图像降噪算法——图像噪声模型

图像降噪算法——图像噪声模型 图像降噪算法——图像噪声模型1. 图像噪声建模2. C代码实现3. 结论 图像降噪算法——图像噪声模型 1. 图像噪声建模 首先,我们要区分图像传感器噪声和图像噪声,图像传感器噪声我在博客图像传感器与信号处理——详解图像传…

医学成像系列:医学图像噪声

介绍和概述 通常希望图像亮度(或膜密度)是均匀的,除非它改变以形成图像。然而,有些因素即使在不存在图像细节时也倾向于产生所显示图像的亮度的变化。这种变化通常是随机的,没有特定的模式。在许多情况下,…

图像噪声的特点以及分类(一)

前言:本文根据不同的指标对图像的噪声进行分类。 一、图像噪声的成因 图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声…

图像噪声(MATLAB)

1.概念 所谓的图像噪声,是图像在摄取时或是传输时所受到的随机干扰信号。 常见的有高斯噪声和椒盐噪声。 (1)高斯噪声 高斯噪声是一种源于电子电路噪声和由低照明度或高温带来的传感器噪声。高斯噪声也常称为正态噪声,因为曲线符…

图像处理之图像噪声和各种噪声的matlab实现

一、图像噪声的基本定义 噪声在图像上常表现为引起较强视觉效果的孤立像素点或像素块。一般噪声信号与要研究的对象不相关,其以无用的信息形式出现,扰乱图像的可观测信息。通俗的说即噪声让图像不清楚。 图像噪声按照噪声和信号之间的关系可以分为加性…

图像噪声模型(matlab)

概述 在图像的采集、传送和转换过程中,会添加一些噪声,表现为图像模糊、失真和有噪声等。图像复原就是尽可能恢复退化图像的本来面目,沿用图像退化的逆过程进行处理。图像复原技术是根据图像退化的先验知识建立一个退化模型,以此…

OpenCV 图像噪声

图像噪声 由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。 1.1椒盐噪声 椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或…

图像噪声学习总结

目录 一、图像噪声 1.1.图像噪声概念 1.2.噪声来源—两个方面 1.3. 图像噪声的特征 1.4.图像噪声的分类 1.4.1常见的图像噪声主要有以下几种: 1.4.2 图像噪声模型 (1)高斯噪声 (2)脉冲噪声(椒盐噪…

图像噪声与去噪

图像的空域噪声以及二维降噪算法介绍 1 图像噪声的成因 图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声,信道噪声和其他…

图像噪声处理

一、为图像添加噪声 为图像添加噪声可以起到数据增强的作用 对训练数据添加适量噪声,可以使训练后的模型更加鲁棒,对模型的性能提升有一定的帮助。 两种常用噪声:椒盐噪声和高斯噪声 import cv2 import numpy as np import random #添加椒…

图像噪声简介

一、什么是图像噪声? 噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。 二、噪声来源—两个方面…