ES6
ES6
该睡觉觉了
这个作者很懒,什么都没留下…
展开
-
深度克隆-深拷贝
深拷贝 深拷贝是将地址和内存都进行拷贝 之前的对象不会影响到之后的对象// 深拷贝let obj = {name : 'Eric','age' : 18,sex : '男'}; // [object Object]let arr = [33,66,99]; // [object Array]let data = [ {name : '知行合一',author : '王阳明',price : 99,arr : [22,66,88]}, {name : '齐民要术',autho原创 2021-03-14 12:31:02 · 174 阅读 · 0 评论 -
深度克隆-浅拷贝
深度克隆 克隆其实就是拷贝 就是复制 这是主要是针对引用数据类型来说的 也就是说在底层存储的时候 使用堆栈存储的 我们主要针对的对象是 数组 对象 因为只有他们才是引用类型 堆栈空间存储 拷贝涉及到两种拷贝1.浅拷贝 浅拷贝指的是 我们在拷贝被对象的时候 只是拷贝对象的地址 不是拷贝存储 等同于给一个人去两个名字 那么当一个发生改变的时候 另一个也会收到影响// 浅拷贝let obj = {name : 'Eric','age' : 18,sex : '男原创 2021-03-14 12:30:32 · 340 阅读 · 0 评论 -
函数的扩展-对象扩展
对象扩展 Object.is : 判断v1,v2数据是否完全相等 Object.assign : 将源对象source的属性复制到新的目标target对象上 Object.keys : 取出对象中所有的键 作为一个数组 Object.valuess : 取出对象中所有的值 作为一个数组 Object.create : 以一个对象为原型创建另一个对象 Object.defineProperties : 给对象添加属性// 对象扩展// Object.is原创 2021-03-14 12:30:01 · 115 阅读 · 0 评论 -
函数的扩展-数组扩展
数组扩展 Array.from : 将伪数组对象或者可遍历的对象 转换成真数组 Array.of : 将一系列的值转换为数组 find : 找出第一个满足条件的元素 findIndex : 找出第一个满足条件元素的索引<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatibl原创 2021-03-14 12:29:28 · 75 阅读 · 0 评论 -
函数的扩展-数值的扩展
数值扩展 Number.isFinite : 判断是否是有限大 Number.MAX_VALUE : 数字最大值 Number.isInteger : 判断是否是整数 Number.parseInt : 将字符串转换为整型 Math.trunc : 向下取整// 数组的扩展// JS中的数字的最大值// console.log(99999999999999**9);console.log(Number.MAX_VALUE);console.log(1.79原创 2021-03-14 12:28:44 · 78 阅读 · 0 评论 -
函数的扩展-字符串扩展
函数的扩展1.字符串扩展 includes : 是否包含字符串 startsWith : 是否以某个字符开头 endsWith : 是否以某个字符结尾 repeat : 重复字符串指定的次数let str = 'http://www.ujiuye.com/index.html';// 字符串的扩展// includes : 检测是否包含字符或者字符串// 返回值是布尔值console.log(str.includes('h'));console.log(st原创 2021-03-14 12:28:09 · 118 阅读 · 0 评论 -
模块
模块1.概念 模块其实就是一个JS文件 暂时我们这样理解 也就是说 我们之前看到的jquery 他就是一个模块 在ES5中 我们引入和使用模块需要在html中进行使用 JS文件是不能单独运行的 现在也不能 我们之前在html中使用模块的时候 使用script标签中的src属性 其实这个属性特别不好 使用的方式不是特别安全 在ES6中 我们使用的是新的模块操作 使用的时候 我们可以使用import进行引入 我们可以在JS中引入JS 以前 我们一个JS想原创 2021-03-14 12:27:18 · 60 阅读 · 0 评论 -
面向对象-静态方法
静态方法 静态方法是比较特殊的方法 他不需要实例化 直接调用就可以 他的运行速度比较快 大约是普通的对象方法的1.5倍 快了55% 一般情况下 在我们不需要实例化的情况下 或者是不考虑封装的情况下 我们可以使用静态方法 因为快 静态方法需要使用static进行修饰 在调用的时候 直接使用类名.方法名()class Person{ static name = 'MM'; constructor(name,age) { this.name原创 2021-03-13 11:21:35 · 269 阅读 · 0 评论 -
面向对象-继承构造器
继承构造器 继承中可以继承方法 也可以进行方法的重写 但是有一点瑕疵 如果说父类的构造器无法满足子类的时候 我们怎么重写 不能直接重写 需要去继承父类的构造器 然后在加以补充 调用父类的构造器 使用super方法进行调用 继承的时候 必须继承父类构造器中的所有参数class Worker{ constructor(name){ this.name = name; } jx(){ console.log(this.nam原创 2021-03-13 11:21:05 · 65 阅读 · 0 评论 -
面向对象-继承
继承 继承指的是一个类中有另一个类的属性和方法 虽然没有定义 但是可以使用另一个类中的属性和方法 继承使用关键字 extends 继承class Worker{ // 基类 constructor(name){ this.name = name; } kq(){ console.log(this.name + '的考勤信息'); } jx(){ console.log(this.name + '的绩原创 2021-03-13 11:20:34 · 49 阅读 · 0 评论 -
面向对象-构造器
构造器 以上定义的类有一个缺点 上述的类中 只能有一个对象 是一个死类 所以说 不适合开发中使用 如果说定义一个活类 那么就需要不确定的数据 如果说需要活着的数据 那么我们就需要向类中进行传参 构造器 : 他是一个类中的内置方法 方法的名字是固定的 constructor 即使你不定义 这个方法也是存在的 只不过方法是空的而已 其实这个方法是一个魔术方法 不需要我们手动调用 在满足条件的情况下 会被自动调用 那么构造器 在我们实例化的同时 被调用原创 2021-03-13 11:19:51 · 70 阅读 · 0 评论 -
类的组成+实例化一个类,创建对象
类的组成 类的组成是由成员组成 定义类 使用关键字class 后面跟上类名 类名的命名是帕斯卡命名法 后面直接跟上大括号 注意 没有形参列表 类的内部组成主要是成员 成员属性 : 属性是一个事务自身的特征 特性 一般是形容词或者名词 在类中 类似于变量 但是不同与变量 因为成员在类中是全局的 成员方法 : 方法是一个事务的行为 一般是动词 在类中类似与函数 但是不同于函数 因为他也是全局的 定义一个类class Car{原创 2021-03-13 11:19:18 · 449 阅读 · 0 评论 -
面向对象的概念和类和对象的概念
面向对象1.概念 ES6中的面向对象是和其他语言基本比较相似 JS正常来说是基于对象语言 很多程序都是基于对象开发 不是面向对象 但是在ES6中 我们引入了其他语言中的面向对象 面向过程就是 你需要什么 写什么 面向对象 他就是 你直接封装好一个功能 哪里需要的时候 在哪里调用 面向对象的好处 1.避免代码冗余 2.便于后期维护2.类和对象的概念 类 : 类泛指一类事务 比较抽象 对象 : 所有实际存在的实体 对象和类之间的关系是原创 2021-03-13 09:57:16 · 377 阅读 · 0 评论 -
async
async1.概念 async…await是基于promise的generator语法糖,它用来等待promise的执行结果,常规函数使用await没有效果; async修饰的函数内部return不会得到预期的结果,会得到一个promise对象; await等待的promise结果是resolve状态的内容,reject状态的内容需要使用try…catch获取, await关键字必须要出现在async修饰的函数中,否则报错。 主要来说 async函数的特点是 1.获取promi原创 2021-03-13 09:56:03 · 134 阅读 · 0 评论 -
谈谈你对promise的理解
谈谈你对promise的理解 这种做法在逻辑比较复杂的回调嵌套中会相当复杂;也叫做回调地狱; promise用来将这种繁杂的做法简化,让程序更具备可读性,可维护性; promise内部有三种状态,pedding,fulfilled,rejected; pedding表示程序正在执行但未得到结果,即异步操作没有执行完毕,fulfilled表示程序执行完毕,且执行成功, rejected表示执行完毕但失败;这里的成功和失败都是逻辑意义上的;并非是要报错。 其实,promise和回调函数一原创 2021-03-13 09:55:36 · 1077 阅读 · 0 评论 -
Promise
Promise1.简介Promise 是异步编程的一种解决方案,比传统的回调函数和事件更合理、更强大ES6的Promise是一个构造函数, 用来生成Promise实例, Promise实例是异步操作管理者Promise代表了未来某个将要发生的事件(通常是一个异步操作) 有了Promise对象可以将异步操作以同步的流程表达出来, 避免了层层嵌套的回调函数(回调地狱)Promise本身还是在使用回调函数(只不过比回调函数多了一种状态管理)2.使用1.创建 创建promise对象,实例化Pro原创 2021-03-13 09:54:49 · 61 阅读 · 0 评论 -
generator
generator1.简介 ES6提供的解决异步编程的方案之一,Generator函数是一个状态机, 可控制函数执行过程 可暂停函数(惰性求值), 内部yield可暂停,外部调用next方法可启动,每次返回的是yield后的表达式结果2.使用 定义generator需要在function后面加上* ,调用函数不会打印任何函数数据,而是会返回一个指针对象 调用指针对象中的next方法,来执行generator函数中的内容,返回结果和iteraator相似// function mmm()原创 2021-03-12 09:22:16 · 67 阅读 · 0 评论 -
iterator
iterator1.概念 iterator是一个ES6中新增的可迭代任何可迭代数据类型的工具 主要的作用是迭代数组 字符串 set集合 map集合 注意 不能迭代对象 原理 首先创建一个迭代指针 每一次调用next方法 我们返回指向的数据 如果说数据存在 那么返回 {value : 指向的数据(值), done : false} 如果说指针到了最后 无数据可以指向 那么返回 {value : undefined , done : true}2.底层原理/原创 2021-03-12 09:21:37 · 86 阅读 · 0 评论 -
Set和Map
Set和Map1.Set集合 set是一个无序的 不重复的集合 它主要的特点就是不重复 主要用来去重 我们使用set集合的时候 需要new 也就是说他是一个对象1.使用 使用的时候 必须先进行实例化 可以传递一个参数 参数是可选 如果传递参数 参数是数组 返回的结果是set集合 去重之后的数组// set集合let arr = [11,33,99,88,66,99,88,66,99,88,66,99,88,66,99,88,66];// 实例化set集合原创 2021-03-12 09:20:56 · 290 阅读 · 0 评论 -
Symbol类型
Symbol类型1.概念 Symbol是ES6新增的一种数据类型 他是JS中的第七个数据类型 它主要的作用是保证数据的唯一性 使用的时候就像函数的调用 即使同时声明两个Symbol 那么他们的结果也是不一样的 Symbol只有一个作用 保证数据唯一 主要是保证对象中的键的唯一性1.特点 1.Symbol是唯一的 不重复 2.Symbol可以传递一个参数 作为标识 但是即使是参数一样 两个Symbol也不相等 3.Symbol不能和任何数据类型进行运算原创 2021-03-12 09:20:22 · 140 阅读 · 0 评论 -
扩展运算符 REST
扩展运算符 REST 扩展运算符指的是…标识符 这个东西是一种新的运算模式 主要的作用有三点1.解开数组 对象等数据结构 使用该运算符 我们可以直接使用…后面跟上自定义的标识符 进行解开数据结构let obj = { name : 'Eric', age : 18, sex : '男'}let arr = [11,33,55,77,'你好',3.14,null,undefined,{name:'Mary'}];// 使用扩展运算符解开数组conso原创 2021-03-12 09:19:44 · 123 阅读 · 0 评论