首页 > 其他分享 >new对象时内部做了什么?

new对象时内部做了什么?

时间:2023-08-19 15:33:34浏览次数:29  
标签:obj 内部 对象 res new 构造函数 fn const

1.创建一个新对象;
2.该对象执行[[Prototype]](即__proto__)链接;
3.将构造函数的作用域赋值给新对象(this指向该新对象);
4.执行构造函数中的代码(给该对象添加属性、方法);
5.若无显式返回对象或函数,才返回新对象。

 

    function newFn(fn, ...args) {
        // 1.创建一个新对象
        const obj = {}
        // 2.将fn的原型链复制道对象的原型链上
        obj._proto_ = fn.prototype
        // 3.修改fn函数的this并执行
        const res = fn.apply(obj, args)
        // 4.如果fn的返回值是一个对象则返回,如果是非对象则返回obj
        return typeof res === 'object' ? res : obj
    }
    const f2 = newFn(fn, '参数')

  

标签:obj,内部,对象,res,new,构造函数,fn,const
From: https://www.cnblogs.com/qiuchuanji/p/17642532.html

相关文章

  • JAVA 中的方法是对象吗?
    在Java中,方法(Method)不是对象本身,但它们与对象之间存在密切的关系。为了理解这个关系,我们需要了解Java中的方法和对象的概念以及它们之间的交互。方法(Method):方法是Java中执行特定任务的代码块。它是面向对象编程的核心概念之一,用于封装可重复使用的代码。在Java中,每个方法都属于一个......
  • 容器内部使用的比较函数书写方式
    例如:priority_queue为例子。#include<queue>std::priority_queue<Type,Container,Compare>pq;type:优先队列中存储的元素的数据类型。Container:存储元素的底层容器类型,默认为std::vector<Type>Compare:比较函数或函数对象,用于定义元素的比较原则,可以是一个函数指针、函数对象......
  • 容器内部使用的比较函数书写方式
    例如:priority_queue为例子。#include<queue>std::priority_queue<Type,Container,Compare>pq;type:优先队列中存储的元素的数据类型。Container:存储元素的底层容器类型,默认为std::vector<Type>Compare:比较函数或函数对象,用于定义元素的比较原则,可以是一个函数指针、函数对象......
  • 容器内部使用的比较函数书写方式
    例如:priority_queue为例子。#include<queue>std::priority_queue<Type,Container,Compare>pq;type:优先队列中存储的元素的数据类型。Container:存储元素的底层容器类型,默认为std::vector<Type>Compare:比较函数或函数对象,用于定义元素的比较原则,可以是一个函数指针、函数对象......
  • 容器内部使用的比较函数书写方式
    例如:priority_queue为例子。#include<queue>std::priority_queue<Type,Container,Compare>pq;type:优先队列中存储的元素的数据类型。Container:存储元素的底层容器类型,默认为std::vector<Type>Compare:比较函数或函数对象,用于定义元素的比较原则,可以是一个函数指针、函数对象......
  • 容器内部使用的比较函数书写方式
    例如:priority_queue为例子。#include<queue>std::priority_queue<Type,Container,Compare>pq;type:优先队列中存储的元素的数据类型。Container:存储元素的底层容器类型,默认为std::vector<Type>Compare:比较函数或函数对象,用于定义元素的比较原则,可以是一个函数指针、函数对象......
  • C#面向对象的三大特征
    一、封装封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类或者对象隐藏信息。简单地说,一个类就是一个封装了数据及操作这些数据的代码的逻辑实体。目的是增强程序的安全性、简化编程、代码的重用性更高,让修改或扩展更方便。......
  • 面向对象开发的封装
    封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。封装使用 访问修饰符 来实现。一个 访问......
  • JavaScript中的析构对象,析构数组与展开运算符
    前言这些是JavaScript中重要的编程思想,这些析构对象,析构函数与展开运算符很重要这块内容不怎么难,纯属一些语法,但是在所谓的函数式编程,以及React中却是广泛使用的逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内容!!逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内......
  • 解锁New Bing
    阅前需知本文旨在介绍浏览器插件的功能、下载和使用方法,以帮助有兴趣的用户体验和利用NewBing的强大能力。本文不鼓励或支持任何违反国家法律法规或侵犯他人合法权益的行为。本文中提到的所有链接、图片、视频等资源都是由第三方提供的,与本文作者无关。本文作者不对这些资源的安......