![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javaScript
文章平均质量分 69
zhq2005095
这个作者很懒,什么都没留下…
展开
-
JS-遗漏的知识点的汇总
将伪数组转成真数组 Array.from()方法arr = Array.prototype.slice.call(arr, 0)原创 2017-02-24 11:31:10 · 324 阅读 · 0 评论 -
JS-学习ES6之- 数组的扩展
目录扩展运算符Array.from() 和 Array.of()find() 和 findIndex()entries(), keys() 和 values()。返回值均为数组,keys() 是对键名的遍历,values() 是对键值的遍历,entries() 是对键值对的遍历1. 扩展运算符扩展运算符(spread)是三个点(…)。它好比 rest 参数的逆运算,将一...原创 2018-06-04 17:36:05 · 1018 阅读 · 0 评论 -
JS-学习ES6之- class 的基本用法
目录简介constructor 方法类的实例对象私有方法和私有属性class 的静态方法class 的静态属性和实例属性new.target 属性1、简介JavaScript 语言中,生成实例对象的传统方法是通过构造函数。 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class关键字,可以定义类。// ES5...原创 2018-06-12 17:15:25 · 266 阅读 · 0 评论 -
JS-学习ES6之- class 的继承
目录简介Object.getPropertyOf()super 关键字1、简介class 可以通过 extends 关键字实现继承。在子类继承父类的时候,在 constructor 中必须首先调用 super() 方法,然后才能使用 this 。// 父类class Point { constructor (x){ this.x = x; }...原创 2018-06-13 16:15:57 · 261 阅读 · 0 评论 -
JS-学习ES6之- Promise 对象
目录Promise 的含义基本用法错误进阶应用Promise 的实现原理1. Promise 的含义Promise 是异步编程的一种解决方案,避免了传统的回调函数的层层嵌套,也就是常说的“回调地狱”。Promise 一旦新建就会立即执行,无法中途取消。2. 基本用法ES6 规定,Promise 对象是一个构造函数,用来生成 Promise 实例。...原创 2018-06-07 18:32:47 · 594 阅读 · 0 评论 -
JS-学习ES6之- Decorator 修饰器
目录概述类的修饰方法的修饰1、概述用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用 hardcore 继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了增加某一个单一的功能点,显得有些多余了。所以,装饰器的作用: - 是继承关系的一种替代 - 动...原创 2018-06-16 22:00:47 · 7344 阅读 · 0 评论 -
JS-学习ES6之- async & await
目录概述基本用法1. 概述async 函数是什么?一句话,它就是 Generator 函数的语法糖。2. 基本用法2.1 返回 promise 对象async 函数返回的是一个 promise 对象.async function test (){ return 'hello async';}let result = test();cons...原创 2018-06-09 22:08:57 · 1606 阅读 · 0 评论 -
JS - 这一次彻底搞懂 "x == y" 的判断逻辑
javascript 是弱类型语言,在进行 == 运算的时候 ,如果等号两边的数值类型不同的时候,会进行类型转换。1. 类型转换的逻辑算法关于如何进行类型转换,ECMA 的标准里面有说明,如下所示:归纳起来,是按照以下的顺序来执行判断逻辑的:首先判断 x 和 y 的数据类型,如果数据类型相同,则判断值是否相同,如果相同则为 true , 否则为 false。其中需要注意的...原创 2018-07-01 16:58:42 · 1125 阅读 · 0 评论 -
JS-前端使用Blob和File读取文件
目录Blob及其属性和方法FileFileReader及其属性和方法URL及其属性和方法历史上,JavaScript 无法处理二进制数据。如果一定要处理的话,只能使用 charCodeAt() 方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成 Base64 编码,再进行处理。这两种方法不仅速度慢,而且容易出错。ECMAScript 5 引入了 Blob 对象...原创 2019-04-07 15:10:16 · 25860 阅读 · 2 评论 -
JS- async和defer对script脚本加载的影响
直接使用script脚本的话,html会按照顺序来加载并执行脚本,在脚本加载&执行的过程中,会阻塞后续的DOM渲染。这是因为 UI 渲染线程与 JS 引擎是互斥的,当 JS 引擎执行时 UI 线程会被挂起。defer如果script标签设置了该属性,则浏览器会异步的下载该文件并且不会影响到后续 DOM 的渲染;如果有多个设置了 defer 的script标签存在,则会按照顺序执行所...原创 2019-04-11 11:01:07 · 951 阅读 · 0 评论 -
JS-原型,原型链,基于原型和class方式的继承,一篇文章就够了!
原型每个函数(构造函数)都有一个 prototype 属性,指向该函数(构造函数)的原型对象。实例没有 prototype 属性,但是有 __proto__ 属性。函数同时有 prototype 和 __proto__ 属性。function Person(name) { this.name = name;}let person = new Person('xiaoming');...原创 2019-04-12 15:44:58 · 1367 阅读 · 0 评论 -
JS-Generator 执行器的实现
Generator 是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,自动交回执行权。两种方法可以实现执行器:回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权;Promise 对象。将异步操作包装成 Promise 对象,用 then 方法中交回执行权Thunk 函数实现 generator 执行器在js中实现异步的方式为回调函数,比如读取文件...原创 2019-04-14 18:59:41 · 2132 阅读 · 0 评论 -
JS-学习ES6之- 函数的扩展
目录函数的默认值rest 参数name 属性箭头函数双冒号运算符1. 函数的默认值1.1 给函数参数设置默认值的意思是:当没有传参的时候 ,参数取设定的默认值ES5的写法function log (x,y) { if (y === 'undefined'){ y = 'World'; } console.log(x, y);}l...原创 2018-06-04 16:08:40 · 1260 阅读 · 0 评论 -
JS-学习ES6之- 字符串的扩展
目录includes(), startsWith(), endsWith()repeat()模板字符串1. includes(), startsWith(), endsWith()includes():返回布尔值,表示是否找到了参数字符串。startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。endsWith():返回布尔值,表示参数字符串是否在原...原创 2018-06-04 11:24:11 · 187 阅读 · 0 评论 -
JS-使用闭包实现add函数
无意中看到这样一个题目:利用闭包实现一个add函数,使得 add(1,2)=3,add(1)(2)=3。以前看过闭包的概念,平时写js时也有意无意的用到过闭包,但是这个题目,一开始看到的时候还真是有点没思路。不过静下心来,把问题进行了分解,之后就有了答案。我的代码如下:function add(x,y){ // 当实参的数量大于等于2时,则此时返回前两个参数之和 if (argum原创 2017-02-22 23:19:48 · 1394 阅读 · 0 评论 -
JS-数组去重的方法总结
最近,在面试题中经常能够看到数组去重这个题目,这道题目其实很简单,可以有多种方法解答。为了开阔自己的思维,特意去网上查了一下相关的方法,特意总结下来。方法1:使用indexOf方法function uniqueByIndexOf(arr){ var newArr = []; for (var i = 0, len = arr.length; i < len; i++) {原创 2017-02-23 21:07:57 · 360 阅读 · 0 评论 -
JS-封装函数getValue(key),实现获取请求数据中的value值
题目的详细说明:比如有一个请求地址 url = “http://www.baidu.com?name=apple&price=5000&location=beijing“,要求封装一个函数getValue(key),当输入请求数据中的key时,得到对应的value。例如getValue(“name”) = “apple”。我的解题思路如下,见代码:// 假设请求的url地址为var url = "原创 2017-02-23 00:29:07 · 7893 阅读 · 0 评论 -
JS-箭头函数中的this的指向
一直对于ES6中箭头函数在使用的时候有些疑虑,其中一项就是this的指向问题。跟之前我所熟悉掌握的函数内部this的指向是有些地方不同的,但是在箭头函数中this到底指向谁,我模模糊糊的。所以为了搞清楚这个问题,就特意查阅了相关的资料,现总结下来。在JavaScript语言里面,this的用途很广泛。在这里,对this的含义以及原理就不做解释和说明,因为本文的目的是阐明this的指向问题。一般的,t原创 2017-04-24 23:18:29 · 9355 阅读 · 3 评论 -
JS-学习ES6之-ES6模块化的注意点
一直以来javascript的模块化要么使用commonJS,要么使用AMD,在ES6中开始支持模块化了,关键字主要有import(导入)和export(导出)。最近一段时间一直在思考ES6中的模块化与我们正常使用的AMD(如requireJS),以及commomJS(如nodeJS)有何不同。在搜索了相关的资料后,发现ES6模块化中有些地方很值得注意。ES6模块是静态加载ES6 模块的设计思想,是原创 2017-06-09 16:18:39 · 869 阅读 · 0 评论 -
JS-设计模式之观察者模式
最近在学习vue的双响数据绑定时,发现使用到观察者模式,但是我对于这种设计模式一知半解,所以特意总结下来。基本定义观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。观察者:(Watcher)将自己注册到被观察对象(Dep)中,被观察对象将观察者存放在一个容器(Container)里。被观察者:被观察对象发生了某种变化,从容器中得到原创 2017-11-08 11:41:18 · 471 阅读 · 0 评论 -
JS-学习ES6之-对象的扩展
目录属性的简洁表示法Object新增的方法1. 属性的简洁表示法如果属性和属性名相同,则可以写成一个,另外,函数作为属性的时候,可以省略 function 关键字,如下所示。let birth = '2000/01/01';const Person = { name: '张三', // 等同于 birth: birth birth, // 等同于 h...原创 2018-06-02 17:44:43 · 186 阅读 · 0 评论 -
JS-学习ES6之-Symbol数据类型
目录概述Symbol可以传参数Symbol 作为属性名的用法Symbol.for()1.为什么要有SymbolES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲...原创 2018-06-02 22:17:16 · 468 阅读 · 0 评论 -
JS-学习ES6之- Set & Map 的数据结构
目录SetMap1. SetES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。1.1 基本用法Set 本身是一个构造函数,用来生成 Set 数据结构。Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。cosnt set = new Set([1, 2, 3, 4, 4]...原创 2018-06-03 23:08:21 · 150 阅读 · 0 评论 -
JS-学习ES6之- let & const 关键字
1. 基本用法let 为块级作用域,经典用法为 for 循环如果以下代码使用 var,则最后输出的是10var a = [];for (var i =1; i < 10; i++) { a[i] = function(){ console.log(i); };}a[6](); // 10如果使用 let,声明的变量仅在块级作用域内有...原创 2018-06-04 10:34:00 · 182 阅读 · 0 评论 -
JS-学习ES6之- 变量的解构赋值
目录数组的解构赋值对象的解构赋值字符串的解构赋值函数参数的解构赋值用途1. 数组的解构赋值let a = 1;let b = 2;let c = 3;// 等价于let [a, b, c] = [1, 2, 3];一些例子let [foo, [[bar], baz]] = [1, [[2], 3]];foo // 1bar // 2baz ...原创 2018-06-04 11:07:16 · 533 阅读 · 0 评论 -
JS-为什么说 async/await是generator的语法糖?
关于async的介绍,在阮一峰的ES6入门教程中说到:async 函数是什么?一句话,它就是 Generator 函数的语法糖。可是,为什么这么说呢?首先,比如说有一个异步操作,使用 async/await 语法来以同步模拟异步操作。使用 async/await 实现一个 sleep 的功能function sleep(time) { return new Promise((re...原创 2019-04-14 19:13:46 · 4086 阅读 · 1 评论