理解 es6 中class构造以及继承的底层实现原理 原文链接:https://blog.csdn.net/qq_34149805/article/details/86105123 1.ES6 class的使用 JavaScript使用的是原型式继承,通过原型的特性实现类的继承 ES6为我们提供了像面向对象继承一样的语法糖 class Parent { constructor(a){ this.filed1 = a; } filed2 = 2; func1 = function(){} } cl…
点击上方"前端自习课"关注,学习起来~ 对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重要的一部分.在编码过程中,我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.ES6 中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程. 为什么需要解构 我们考虑一个大多数人在使用 Javascript 进行编码时可能遇到过的情况. 假设,我们有一个学生数据…
一.为什么使用Iterator 我们知道,在ES6中新增了很多的特性,包括Map,Set等新的数据结构,算上数组和对象已经有四种数据集合了,就像数组可以使用forEach,对象可以使用for...in.. 进行遍历一样,是不是随着Map和Set的出现也应该给这两种集合一个遍历方法呢?如果这样的话js的方法对象就太多了,既然这四种集合都是需要遍历的,那么完全可以用一个统一的访问机制.于是乎Iterator应运而生. 二.Iterator是什么 Iterator是一个访问机制,同时是一个接口,可以实…
一.为什么ES6引入Symbol 有时候我们在项目开发的过程中可能会遇到这样的问题,我写了一个对象,而另外的同时则在这个对象里面添加了一个属性或是方法,倘若添加的这个属性或是方法是原本的对象中本来就有的,那么这个时候势必会造成冲突,那么为了防止这种冲突,ES6 就引入了Symbol 二.Symbol使用方法 Symbol是一个新的数据类型,所以不要因为Symbol的使用方法的特殊而认为它只是es6中的新的方法.它所代表的是独一无二的,即便其参数一致. 1.使用方法 Symbol的使用方法是Sym…
阅读目录 一:Reflect.get(target, name, receiver) 二:Reflect.set(target,name,value,receiver) 三:Reflect.apply(target,thisArg,args) 四:Reflect.construct(target,args[, newTarget]) 五:Reflect.defineProperty(target,name,desc) 六:Reflect.deleteProperty(target,name) 七…
一.Promise的作用 在ajax请求数据的过程中,我们可以异步拿到我们想要的数据,然后在回调中做相应的数据处理. 这样做看上去并没有什么麻烦,但是如果这个时候,我们还需要做另外一个ajax请求,这个新的ajax请求的其中一个参数,得从上一个ajax请求中获取,这个时候我们就需要在回调函数中再写一个异步请求,然后在这个异步函数的回调函数里在写相应的数据处理.要是连续嵌套个三四层,往往就很恶心了. 写起来就像下面这样: $.ajax({ type:'get', url:'url_1', data…
箭头函数相当于定义时候,普通函数.bind(this)箭头函数根本没有自己的this,导致内部的this就是定义时候的外层代码块中的this.外层代码块中的this,则取决于执行时候环境上下文context中的this并不是所有的{}都可以代表是上下文环境或者代码块,例如  {x:1,y:2} ,就是简简单单的对象.但是function () { 这里是代码块,有上下文context环境,例如参数,属性,变量等} 还有就是context为window(global)的情况. 通过实例来分析箭头函…
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动. 效果 对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 对于复合类型的数据(主要是对象和数组),变量指向的内存地址,const只能保证这个指针是固定的,不能保证它指向的数据结构是不可变得 'use strict' const obj = {} const arr = [] obj.prop = 123 // 不改动指针 arr.push('Hello') // 只改…
https://www.jianshu.com/p/9e4af5b77253 https://zhuanlan.zhihu.com/p/30797777 https://segmentfault.com/a/1190000018530433…
0.前言 前端工程,在最早的时候是没有模块的概念的.随着前端工程的发展,前端开发也越来越规范化,更像是软件工程了.那么随之而来的,为了解决工程化的问题,就引入了模块的概念.但是在早期,因为ecmascript原本是没有模块语法的,所以采用的都是社区的各种版本协议,其中影响最深的,就是nodejs使用的CommonJS规范 . 当模块化的概念越来越重要的时候,在es6中,引入了模块的语法:import ,下面我们简单了解一下,import是怎么使用的.一下内容,参考 官方文档 1.export 一…