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

模拟实现 new 操作(js)

js 不是基于 class 这种静态类模式,而是基于原型对象的模式。 所以,在 js 中,new 操作,其实可以通俗的理解成一个辅助工具,用来辅助函数构造出一个新对象。...所以,我们才能够来模拟实现它,因为它其实通俗理解,就是一个工具函数。 得先明确这点,才能知道,的确是可以模拟 new 操作的。...并没有 要模拟实现一个完整的 new 操作,就还得将它的其他使用场景都考虑进去: 当构造函数有返回值时 判断一个函数是否能够作为构造函数使用 先来考虑第一种: function A() { this.a...没错,从引擎角度来看,的确是这样处理,但这些内部属性我们并没有办法看到的啊,那对于我们这些写 js 的来说,如何判断一个函数是否能够作为构造函数呢?靠经验积累?...对象的简写方法不能作为构造函数使用({ A(){} }) 内置方法不能作为构造函数使用(如 Math.min) 靠经验积累只能是这样一条条去罗列,末尾链接的文章里有这么一句话: [除非特别说明,es6+ 实现的特定函数都没有实现

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

Js运算

前言:今天的内容是对js的部分基础内容过一遍,没有细细的去分析,只是一篇概要。...关键字,保留字 (一)标识 标识:就是指开发人员为变量,属性,函数,参数取的名字(自定义) 注意:标识:不能是关键字或者保留字 (二)关键字 关键字:是指JS本身已经使用了的字,不能再把它充当变量名...运算 运算:也被称为操作,是用于实现赋值,比较和执行算数运算等功能的符号。...js中常用的运算有 算数运算 递增和递减运算 比较运算 逻辑运算 赋值运算 算术运算 概念:算术运算使用的符号,用于执行两个变量或值的算术运算。...3 算数运算 先*,/ %后+ - 4 关系运算 > > = < < = 5 相等运算 == != === !

14030

JS位移运算(<<、>>、>>>)

移位运算是C++中常用的算术表达式 但是在前端和硬件通过蓝牙通信时我们也会经常用到 移位运算在程序设计中,是位操作运算的一种。...移位运算可以在二进制的基础上对数字进行平移。...按照平移的方向和填充数字的规则分为三种: << //左移 >> //带符号右移 >>> //无符号右移 左移运算(<<)规则 按二进制形式把所有的数字向左移动对应的位数,高位移出...1<<3 //等于 1*2³ 8 2<<3 //等于 2*2³ 16 右移运算(>>)规则: 按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零...10>>3 //等于 1 100>>3 //等于 12 无符号右移运算规则: 按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。

15310

js正则表达式

js正则表达式 目录 正则表达式定义及作用 字符串方法使用正则表达式 修饰及模式 RegExp对象 实际用例 正则在线工具 正则表达式定义及作用 定义 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式...语法 /正则表达式主体/修饰(可选) 作用 文本搜索 文本替换 字符串方法使用正则表达式 search()方法 检索与正则表达式相匹配的子字符串,并返回子串的起始位置 代码实例 var...str = 'HvGege' var n = str.search(/ge/i) console.log(n) 输出结果 2 代码解释 i是一个修饰, 表示搜索不区分大小写 search()方法也可以用于检索字符串中指定的子字符串...(str1) 输出结果 Hvgegegege 代码解释 g是修饰, 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) 修饰可以叠加, 此处使用两个修饰i,g 修饰及模式 修饰...正则表达式在线生成工具 http://tools.jb51.net/regex/create_reg

7.3K30

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

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

98620

js正则表达式(一)

https://blog.csdn.net/wkyseo/article/details/78017841 最近对正则表达式又不熟悉了,故重新疏漏API,以后每日写一个正则来练习提升 正则表达式中特殊字符的含义...\n //一个反向引用(back reference),指向正则表达式中第 n 个括号? (?:x) //Matches x but does not remember the match....compile compile() 方法用于在脚本执行过程中编译正则表达式,也可用于改变和重新编译正则表达式。...最新标准已废弃 支持正则表达式的 String 对象的方法 search stringObject.search(regexp) 返回值:stringObject 中第一个与 regexp 相匹配的子串的起始位置...如果第一个参数是正则表达式,并且其为全局匹配模式,那么这个方法将被多次调用, 每次匹配都会被调用。 变量名 代表值 match 匹配的子串(不是分组)。(对应于上述的$&。)

3.8K40

JS高级」正则表达式

1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。...比如用户名: /^[a-z0-9_-]{3,16}$/ 2.正则表达式js中的使用 2.1正则表达式的创建 在 JavaScript 中,可以通过两种方式创建一个正则表达式。...特殊字符非常多,可以参考: MDN官方手册 jQuery 手册:正则表达式部分——正则测试工具 3.2边界 正则表达式中的边界(位置)用来提示字符所处的位置,主要有两个字符 边界 说明 ^ 表示匹配行首的文本...;//true 3.3.2量词 量词用来设定某个模式出现的次数。 量词 说明 * 重复0次或更多次 + 重复1次或更多次 ?...} }; //密码验证:/^[a-zA-Z0-9_-]{6,16}$/ //再次输入密码只需匹配与上次输入的密码值 是否一致 3.5正则替换replace replace() 方法可以实现替换字符串操作

2.5K20

js正则表达式梳理

正则表达式简介 正则表达式(Regular Expression): 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的租和,组成一个“规则字符串”,这个规则字符串用来表达对字符串的一种过滤逻辑...正则表达式的作用 给定的字符串是否符合正则表达式的过滤逻辑(匹配)。 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)。 强大的字符串替换能力(替换)。...正则表达式的组成 普通字符 abc 中国 123 等 特殊字符(元字符、限定、中括号):正则表达式中有特殊意义的字符。 元字符 元字符就是在正则表达式中具有特殊含义的字符。 元字符 说明 ....数量 控制字符出现的次数,对字符个数限制 数量 说明 n* 匹配任何包含零个或者多个n的字符串。...,即变成了惰性匹配 js中使用正则表达式 1//方式1: 语法: var 变量 = new RegExp("规则","修饰") 2var reg = new RegExp("d","g") 3 4//

5.1K10
领券