随笔分类 -  JavaScript 总结

记录 JavaScript 相关的基础知识
摘要:对象类别 一直以来对象的术语描述没有统一的标准,于是ES6规范定义了每一个类别的对象,对象的类别如下: 1、普通(Ordinary)对象 具有JS对象所有的默认内部行为 2、特异(Exotic)对象 具有某些与默认行为不符的内部行为 3、标准(Standard)对象 ES6规范中定义的对象,例如,A 阅读全文
posted @ 2021-09-29 11:37 wmui 阅读(119) 评论(0) 推荐(0)
摘要:正则表达式主要用于处理文本数据,即字符串。在ES6中,随着字符串操作的变更,正则表达式也进行了相应更新 构造函数 在ES5中,使用构造函数方式创建正则表达式的方式有两种 第一种情况是,参数一是一个字符串,这时第二个参数表示正则表达式的修饰符(flag) 第二种情况是,参数是一个正则表示式,这时不能设 阅读全文
posted @ 2021-09-29 11:36 wmui 阅读(57) 评论(0) 推荐(0)
摘要:求幂运算符 在ES6之前通常使用Math.pow()方法执行求幂运算,ES6新引入了求幂运算符,用两个星号( )表示,左操作数是基数,右操作数是指数。 求幂运算符可以和等号结合,形成新的赋值运算符( =) 注意: 在v8引擎中,求幂运算符和Math.pow()的实现是不同的,对于特别大的运算结果会有 阅读全文
posted @ 2021-09-29 11:35 wmui 阅读(81) 评论(0) 推荐(0)
摘要:JS中的字符串是一组由引号包裹的16位Unicode字符组成的字符序列。在Unicode引入扩展字符集之后,JS中的Unicode编码规则也进行了变更,本文介绍ES6中关于Unicode的相关扩展。 基本概念 Unicode的目标是为世界上每一个字符提供唯一标识符。唯一标识符(code point) 阅读全文
posted @ 2021-09-29 11:35 wmui 阅读(224) 评论(0) 推荐(0)
摘要:JS的字符串的功能一直以来都特别有限,缺乏很多特性,比如不能直接表示多行字符串、字符串格式化、HTML转义等等。ES6通过模板字面量方式进行了填补,它通过全新的方法解决了这些问题。 基础用法 模板字面量使用反引号``标识。 js let s = console.log(s) // 'hello wo 阅读全文
posted @ 2021-09-29 11:34 wmui 阅读(85) 评论(0) 推荐(0)
摘要:常量 Math对象有8个常量,主要包括对数、派值和平方根 对数 关于数值e,可以参考知乎 "这篇文章" 派值 平方根 函数 Math对象有18个静态函数,主要包含最值、舍入、随机数、三角函数、乘方和开方。这些函数都涉及到Number()隐式类型转换,若超出范围,将返回NaN。 最值 Math.min 阅读全文
posted @ 2021-09-29 11:33 wmui 阅读(220) 评论(0) 推荐(0)
摘要:本文详细介绍ES6对字符串的扩展 字符串识别 在ES6之前,常使用indexOf()方法判断一个字符串中是否包含另一个字符串。ES6新增加了3个方法让开发者更方便的识别字符串。 【includes(str, index)】字符串包含给定文本时返回true,否则返回false。str表示要查找的文本, 阅读全文
posted @ 2021-09-29 11:33 wmui 阅读(67) 评论(0) 推荐(0)
摘要:JSON(JavaScript Object Notation)全称JavaScript对象表示法,是一种数据交换的文本格式,用于读取结构化数据。 语法规则 JSON的语法可以表示三种类型值:简单值、对象、数组。 简单值 JSON中的简单值可以是字符串、数值、布尔值、null。 字符串必须使用双引号 阅读全文
posted @ 2021-09-29 11:32 wmui 阅读(341) 评论(0) 推荐(0)
摘要:上一篇介绍了 "创建对象的5种模式" ,本篇介绍对象实现继承的3种形式。继承简单说就是在原有对象基础上稍作改动,得到一个新的对象,这个新对象可以拥有原对象的属性和方法。JS实现继承的3种方式:类式继承、class继承和拷贝继承。 JS这门语言和其他面向对象的语言不同,它并不支持类和类继承特性,只能通 阅读全文
posted @ 2021-09-29 11:31 wmui 阅读(204) 评论(0) 推荐(0)
摘要:面向对象是一种描述代码组织架构的形式,一种在软件领域对真实世界中问题的建模方法。本文主要介绍面向对象程序设计(OOP)中的一些常见名词和概念 对象 何为对象?简单说就是事物或人物在程序设计语言中的变现形式。例如“人”可以被看做是一个对象,每个人都有名字、性别和年龄这些特征,在OOP中这些特征称为属性 阅读全文
posted @ 2021-09-29 11:31 wmui 阅读(81) 评论(0) 推荐(0)
摘要:在 "JS对象类型 对象 认识对象" 一文中,介绍了创建对象的3种方式:new构造函数、对象字面量和Object.create()函数。下面基于这3种方式介绍下创建对象的5种常用模式。 对象字面量 对象字面量方式虽然可以创建单个对象,但是如果同时创建多个类似对象,会产生大量冗余代码。 工厂模式 为了 阅读全文
posted @ 2021-09-29 11:30 wmui 阅读(103) 评论(0) 推荐(0)
摘要:JS中最复杂的莫过于prototype、proto和constructor之间的三角关系,搞清楚它们之间的关系对理解JS这门语言很重要,下面是我画的一张关系图,本文以该图为例解释它们之间的关系。 基本概念 【构造函数】用来初始化实例对象的函数是构造函数。图中浅绿色的People()、Object() 阅读全文
posted @ 2021-09-29 11:29 wmui 阅读(205) 评论(0) 推荐(0)
摘要:this机制是js中很重要的知识点,它和作用域查询是两个容易混淆的知识点。本文将详细介绍this的4种绑定规则。 默认绑定 1. 全局环境中,this指向window。 2. 独立函数调用时,this指向window。严格模式下指向undefined。 3. 作为对象的方法调用时,this指向原对象 阅读全文
posted @ 2021-09-29 11:20 wmui 阅读(86) 评论(0) 推荐(0)
摘要:定义 闭包是指函数声明时所处作用域外被调用的函数。所以闭包也是函数,只不过要满足3个条件才叫闭包: 1. 访问函数所处作用域。 2. 函数嵌套。因为只有函数嵌套才能创建不同的作用域。 3. 函数所处作用域外被调用。 示例中在全局作用域中被调用的foo2函数就是一个闭包。foo2声明时所处的作用域就是 阅读全文
posted @ 2021-09-29 11:19 wmui 阅读(74) 评论(0) 推荐(0)
摘要:声明提升(hoisting)分为变量声明提升和函数声明提升。声明从它们在代码中出现的位置被“移动”到最上面的过程,被称作声明提升。每个作用域都会有声明提升。 在介绍作用域的内部原理时有提过,引擎在解释JS代码前首先进行编译,编译过程中会找到所有的声明,并用合适的作用域将它们关联起来。 以 说明,这行 阅读全文
posted @ 2021-09-29 11:13 wmui 阅读(60) 评论(0) 推荐(0)
摘要:在ES6之前,JS中的作用域只有全局作用域和函数作用域。ES6引入了块作用域,使得开发和维护都变得更简单,在这里对ES6的块作用域进行简单介绍。 let js // 示例1 for (var i= 0; i 阅读全文
posted @ 2021-09-29 11:13 wmui 阅读(67) 评论(0) 推荐(0)
摘要:词法作用域 在介绍作用域的第一篇文章中说到编译器的第一个阶段是分词,词法作用域就是定义分词阶段的作用域,是由代码中变量作用域和块作用域的位置决定的,所以词法分析器在处理代码时会保持作用域不变。 词法作用域只由函数被声明时所处的位置决定。 上面的例子中有三个逐级嵌套的作用域: 1. 第一级就是最外层的 阅读全文
posted @ 2021-09-29 11:12 wmui 阅读(114) 评论(0) 推荐(0)
摘要:浅拷贝和深拷贝是针对数组和对象而言的。对象的浅拷贝只复制了一层对象的属性,对于Array和Object这些引用类型值拷贝的是一个在内存中的地址。而深拷贝会把对象的属性通过递归的方式逐个复制,包括引用类型值。 浅拷贝 深拷贝 【方法1】 【方法2】 使用JSON全局对象的parse和stringify 阅读全文
posted @ 2021-09-29 11:11 wmui 阅读(108) 评论(0) 推荐(0)
摘要:JavaScript有一套良好的规则用来存储变量,方便变量的查找,这套规则被称作作用域。 作用域的内部原理分为编译、执行、查询、嵌套和异常5个部分,下面对这5部分进行详细介绍。 编译 编译过程有3步:分词、解析和代码生成。下面以 为例进行这3个过程的说明。 分词(tokenizing) 把字符串分解 阅读全文
posted @ 2021-09-29 11:11 wmui 阅读(82) 评论(0) 推荐(0)
摘要:属性描述符用于描述对象的值是否可配置、是否可修改、是否可枚举。 描述符类型 对象的属性描述符的类型分为两种:数据属性和访问器属性。 数据属性 数据属性包含一个数据值的位置,该位置可读取和写入值。数据属性有4个特性。 【configurable】configurable表示可配置性,它决定了是否可以用 阅读全文
posted @ 2021-09-29 11:10 wmui 阅读(368) 评论(0) 推荐(0)