首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

模拟实现 new 操作符(js)

js 不是基于 class 这种静态类模式,而是基于原型对象的模式。 所以,在 js 中,new 操作符,其实可以通俗的理解成一个辅助工具,用来辅助函数构造出一个新对象。...得先明确这点,才能知道,的确是可以模拟 new 操作符的。...并没有 要模拟实现一个完整的 new 操作符,就还得将它的其他使用场景都考虑进去: 当构造函数有返回值时 判断一个函数是否能够作为构造函数使用 先来考虑第一种: function A() { this.a...——(来自于MDN) 其实这句解释就把 new 操作符的所有职责或者说所有使用场景覆盖了: 用户定义的对象类型 ==> 当构造函数有返回值时 具有构造函数的内置对象 ==> 当前函数可用来作为构造函数,...没错,从引擎角度来看,的确是这样处理,但这些内部属性我们并没有办法看到的啊,那对于我们这些写 js 的来说,如何判断一个函数是否能够作为构造函数呢?靠经验积累?

3.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Kotlin 协程】Flow 操作符 ② ( 末端操作符 | collect 操作符 | reduce 操作符 | single 操作符 | first 操作符 | toList 操作符 )

    文章目录 一、末端操作符 1、collect 操作符 2、reduce 操作符 3、single 操作符 4、first 操作符 5、fold 操作符 6、toList 操作符 7、toSet 操作符...一、末端操作符 ---- 末端操作符 指的是 在 Flow 流最末端 调用 挂起函数 收集元素 的操作符 , 最常见的 末端操作符 就是 collect 操作符 ; 常见的末端操作符 : 收集元素 :...collect 操作符原型 : /** * 终端流操作符,使用提供的[动作]收集给定的流。...single 操作符原型 : /** * 终端操作符,等待一个且仅等待一个值发出。...first 操作符原型 : /** * 终端操作符,返回流发出的第一个元素,然后取消流的收集。

    94910

    重学js之JavaScript基本概念(中)- 操作符

    操作符 用于描述一组可以操作数据值的概念叫做操作符。包括 算术操作符(加号和减号)、位操作符、关系操作符和相等操作符。...1.1 一元操作符 只能操作一个值的操作符叫做一元操作符。 1.1.1 递增和递减操作符 分为两种类型:前置和后置型,前置位于要操作的变量之前。后置则在要操作的变量之后。...-64 // 二进制 11111111111111111111111111000000 var newnum = oldnum >>> 5 // 十进制 134217726 本文章为《重学js...系列》的第三章第二篇,后续还为大家带来js基础的更多文章。...重学JS系列: 1、重学js之JavaScript简介 2、重学js之在HTML中使用JavaScript 3、重学js之JavaScript基本概念(上)- 数据类型

    54030

    【Kotlin 协程】Flow 操作符 ① ( 过渡操作符 | map 操作符 | transform 操作符 | 限长操作符 | take 操作符 )

    文章目录 一、过渡操作符 1、map 操作符 2、transform 操作符 二、限长操作符 ( take 操作符 ) 一、过渡操作符 ---- 过渡操作符 相关概念 : 转换流 : 使用 过渡操作符...转换 Flow 流 ; 作用位置 : 过渡操作符作用 于 流的上游 , 返回 流的下游 ; 非挂起函数 : 过渡操作符 不是挂起函数 , 属于冷操作符 ; 运行速度 : 过渡操作符 可以 快速返回 新的...转换流 ; 1、map 操作符 通过 map 操作符 , 可以操作每个元素 , 将元素转为另外一种类型的元素 ; map 操作符原型 : /** * 返回一个流,其中包含对原始流的每个值应用给定[transform...通过 transform 操作符 , 可以操作每个元素 , 可以在单个元素处理时 , 发射多次元素 ; transform 操作符原型 : /** * 将[transform]函数应用到给定流的每个值...* * 该操作符泛化了[filter]和[map]操作符和 * 可以用作其他操作符的构建块,例如: * * ``` * fun Flow.skipOddAndDuplicateEven

    78020

    JS 原生方法原理探究(三):如何实现 new 操作符

    这是JS 原生方法原理探究系列的第三篇文章。本文会介绍如何模拟实现 new 操作符。关于 new 的具体用法,MDN 已经描述得很清楚了,这里我们只做简单的介绍,具体的重点在于如何模拟实现。...new 操作符的规范 下面展示的所有规范都是 ES5 版本的,与现在最新的规范有些区别 首先看一下根据规范的描述, new 操作符做了什么事: ?...全是英文,不过没关系,我简单翻译一下: 我在使用 new 操作符的时候,后面跟着的构造函数可能带参数,也可能不带参数,如果不带参数的话,比如说 new Fn(),那么这里这个 Fn 就是一个 NewExpression...这两种情况下使用 new 操作符所进行的操作有点点不同,这里拿带参数的情况说明一下: 首先会对 Fn 这个 MemberExpression 求值,其结果是指向实际函数对象的一个引用,我们把这个引用作为...[[Constructor]] 的规范 在 JS 中,函数有两种调用方式,一种是正常调用,这将调用函数的内部方法 [[Call]],还有一种是通过 new 调用,此时的函数作为一个构造函数,这将调用函数的另一个内部方法

    1K20

    JavaScript操作符(布尔操作符、乘性操作符和加性操作符

    布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!)、逻辑与(&&),逻辑或(||)。 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值。...两个操作数都为false,结果为false 乘法操作符由一个星号(*)组成,用于计算两个数值的乘积。...var num =2*3; console.log(num);//输出6 除法操作符由一个斜杠(/)组成,用于第一个操作数除以第一个操作数的计算。...var num=4/2; console.log(num);//输出2 求模操作符由一个百分号(%)组成,用于计算余数。...var num=5%2; console.log(num);//输出1 加法操作符由加号(+)组成,用于求和以及拼接字符串。

    63160

    JavaScript操作符(一元操作符、位操作符

    JavaScript操作符包括算术操作符、位操作符、关系操作符和相等操作符。只能操作一个值的操作符叫做一元操作符。 递增和递减操作符 递增和递减操作符有两个版本:前置型和后置型。...前置型操作符位于要操作的变量之前,后置型操作符位于要操作的变量之后。 需要将一个变量的值在使用前就进行加减操作,一般使用前置操作符。...前置型操作符,在使用该变量之前已经进行++或者--操作,而后置型操作符是先使用该变量,然后再进行++或者--操作的。  ...一元加减操作符 大多数开发人员对一元加减操作符都不陌生,一元+操作符放在数值前面,对数值不会产生影响。一元减操作符(-)用于表现负数,如-1....位操作符操作符用于在最进本的层次上,即按内存中表示数值的位来操作数值。JavaScript中的所有数值以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值。

    84260
    领券