![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
es6经典入门到进阶
es6查缺补漏
luckybing~
一个积极向上、乐观开朗、遇到Bug想一晚上、没秃顶、会写段子的web前端工程师
展开
-
用模块封装代码
(一)模块( Modules )是使用不同方式加载的 JS 文件1. 模块代码自动运行在严格模式下,并且没有任何办法跳出严格模式2. 在模块的顶级作用域创建的变量,不会被自动添加到共享的全局作用域,它们只会在模块顶级作用域的内部存在;3. 模块顶级作用域的 this 值为 undefined ;4. 模块不允许在代码中使用 HTML 风格的注释(这是 JS 来自于早期浏览器的历史遗留特性);5. 对于需要让模块外部代码访问的内容,模块必须导出它们;6. 允许模块从其他模块导入绑定。原创 2020-06-05 21:43:46 · 251 阅读 · 0 评论 -
ES6中的类
1. ES5中的仿类ES5中没有类,与类最相近的是创造一个构造器,然后将方法绑定到构造器的原型上,例子如下: function Person (name) { this.name = name } Person.prototype.getName = function () { return this.name } Person.prototype.setName = function (value) { this.name =原创 2020-06-02 21:51:23 · 201 阅读 · 0 评论 -
Symbol
1. 特点:每个Symbol实例都是唯一的。因此,当你比较两个Symbol实例的时候,将总会返回false,产生唯一数据let test = Symbol()let test1 = Symbol()console.log(test === test1) // falselet test = Symbol() // 初始化一个Symbolconsole.log(typeof test) // symbol2. 添加描述let test = Symbol('好的')let test原创 2020-06-02 19:33:45 · 187 阅读 · 0 评论 -
Map 和 WeakMap
在对象中,如果键值设置为了数字,对象会自动把数字转换为字符串let obj = { 1: 'hhh', '1': 'bbb' } console.log(obj)相当于创建了两个键值是字符串1的值,后面的把前面的覆盖掉,结果等同如下let obj = { '1': 'bbb' }所以如果对象赋值,同名一个字符串一个数字是不可能的,但如果遇到这种需求会怎么办呢,使用Map,Map对键值的比较是使用Object.is()1. m原创 2020-06-01 12:35:32 · 156 阅读 · 0 评论 -
Set
1. Set 去重进行比较原理是用了 Object.is() 方法,来判断两个值是否相等2. Set方法汇总:5种let Set = new Set() // 1. 增加 Set.add() // 2. 判断是否存在 Set.has() // 3. 删除 Set.delete() // 4. 清空 Set.clear() // 计算长度 Set.sizelet set = new Set() var ar原创 2020-05-30 16:39:10 · 123 阅读 · 0 评论 -
解构
1.解构赋值表达式的值为表达式右侧(在 = 之后)的值。也就是说在任何期望有个值的位置都可以使用解构赋值表达式。let obj = { name: 'name', age: 12 } function test(value) { console.log(value) // {name: "name", age: 12} } test({name, age} = obj) console.log(name, age) // .原创 2020-05-27 21:32:29 · 425 阅读 · 0 评论 -
函数
1. 函数名称要高于赋值变量的变量名const test = function nameElse () { console.log(11)}console.log(test.name) // nameElse2. 通过使用 new.target 来判断函数是否使用了new进行调用new.target指向被new调用的构造函数function Person (name) { if (new.target === Person) { this.name原创 2020-05-25 22:19:25 · 160 阅读 · 0 评论 -
数组相关
1. Array.of()在使用 Array.of() 方法创建数组时,只需将想要包含在数组内的值作为参数传入。这个与 new Array()用法类似,不同的是当传入一个值时,Array.of()表示数组长度是1,数组第一个值为传入的值,而new Array() 表示数组的长度为传入的值,数组值为 undefinedlet arr1 = new Array(2) console.log(arr1) // [undefined, undefined] console.log(arr1.l原创 2020-05-23 21:22:15 · 196 阅读 · 0 评论 -
函数(二)
1. 参数默认值function test (first, second = 'b') { console.log(arguments[0] === first) // true console.log(arguments[1] === second) // false first = first + second second = '' console.log(arguments[0] === first) // false c原创 2020-05-26 16:25:14 · 123 阅读 · 0 评论 -
字符串
1. 查找一个字符串中的唯一字符 indexOf() 、lastIndexOf()var str = 'indexOfLastindexOf' for (var i = 0; i< str.length; i++) { if(str.indexOf(str[i]) === str.lastIndexOf(str[i])) { console.log(str[i]) } }输出:L a s t2. 实现增加缩进 repeat方法原创 2020-05-23 12:28:55 · 202 阅读 · 0 评论 -
let const 块级作用域
一:let 、const 与 var 相比存在 块级作用域,一个{} 就是一个块var 定义的变量只在(全局) 和 (函数)中 有作用域,其余都可用 if (true) { var a = 5 } console.log(a) // 5if(){} 不是函数,所以 a 的作用域是全局 if (true) { let a = 5 } ...原创 2020-02-18 15:21:53 · 857 阅读 · 0 评论