ES6知识点总结 什么是ES6 var let const promise的理解 说一下async和await 以及他们和promise的区别 promise的all和race方法

一、什么是ES6

答:
	ES6结束ECMAScript的第六个版本
	js由三部分组成 DOM(文档对象模型) BOM(浏览器对象模型) ECMAScript(js语法)

二、promise

1.promise的理解

答:
	promise就是ES6为我们提供的一种异步解决方案 在我的理解中promise就是把异步换了一种写法
	从之前的嵌套函数变成了链式的写法

2.什么是promise?promise能解决什么?

答:
	promise就是ES6为我们提供的一种异步解决方案 在我的理解中promise就是把异步操作换了一种写法
	从之前的嵌套函数变成了链式的写法
	promise能够解决**回调地狱**的问题  所谓的回调地狱就是拿到a的数据去请求b的数据 
	拿到b的数据去请求c的数据  这样回调函数嵌套回调函数的写法就叫做回调地狱
	这样的写法比较臃肿 后期难以维护
	出来promise之外还可以用async最终解决方案

3.promise的特点 (三种状态)

答:
	promise有三种状态 resolve(成功),reject(失败),pending(进行中) 
	如果成功的话 可以用resolve将成功的结果返回出去 通过.then()方式来接收
	如果失败的话 可以用reject 将失败的结果返回出去 通过.catch()方式来接收
	pending的状态是进行中 一旦进行之后他的状态是不可逆的

4.promise怎么用?

答:
	如果要使用promise我们要对promise进行实例化 在实例化构建里面有一个回调函数这个函数里面有两个参数
	分别是(resolve,reject) 我们可以通过promise的实例化对象调用可以用.then() .catch()的方式
	来接收结果

5.哪些东西本身就是promise对象

答:
	jQuery的ajax请求 axios请求 等等 都是promise对象 都可以直接用.then(),.catch()

6.哪些东西不是promise对象

答:
	wx.request和原生ajax都不是promise对象 不能用.then()方法 如果想用 可以自己封装个promise

三、说一下async和await 以及他们和promise的区别

答:
	async是异步操作的最终解决方案 async一般和await配合使用  当我们给函数前面加上关键字async的时候
	这个函数的返回值就是一个promise 而await是一个同步的操作 await只能配合async不然会报错
	await后面可以是一个表达式也可以是一个promise 在await下面的代码 必须等在await执行完成之后才去执行
	他们和promise区别就是在写法上更简洁

四、generator函数

答:
	generator函数也是ES6的异步回调的一种写法 但是这种写法背async取代了
	generator给函数用*表示 和yield搭配使用

五、promise的all和race方法

答:
	promise还给我们提供了.all和.race 
	期中all方法就是 将多个请求合并成一个请求 比如当首页要请求10接口 就可以用promise.all进行合并
	.race的作用也是将多个请求合并成一个请求 谁先请求成功就先返回谁

六、说一下var let const 区别

答:
	var和let是声明变量的 const是声明常量的
	var声明的变量存在变量提升 而let和const不会
	var是函数作用域生效 let和const是块级作用域生效
	var在全局作用域声明的变量会挂载的window上 而let和const不会

7.箭头函数与普通函数的区别

答:
	箭头函数就是ES6为我们提供的一种简洁的函数写法
	写法:函数名()=>(){} 当函数中只有一个表达式的时候{}和return都可以省略
	特点:箭头函数的this始终指向箭头函数定义式离this最近的一个函数 如果没有就指向window
	区别:
		箭头函数不能用于构造函数 不能使用new xxx 而普通函数可以
		在普通函数中 this始终指向调用它的对象 如果用于构造函数 this指向创建的对象实例
		在箭头函数中 this始终指向离箭头函数定义时离this最近的一个函数 如果没有就指向window

8.说一下for in 和for of 的区别

答:
	for in 用来遍历对象 而for of 遍历对象会报错
	for in 遍历数组 得到数组的下标 而 for of 遍历数组 得到数组里面的每一个元素

9.ES5的面向对象和ES6的面向对象

答:
	ES5的面向对象是通过new 一个构造函数实现的
	ES6的面向对象是通过class实现的 ES6的class就是面向对象的语法糖
	面向对象是一个概念或者编程思想 面向对象相当于面向过程来讲的 面向对象方法 把相关的数据和方法
	组织为一个整体来看待 从更高的层次来进行系统建模 更贴近事物的自然运行模式

10.说一说new操作符具体干了什么

答:
	在js中new操作符用于构建一个给定构造函数的实例对象
	new的实例可以访问构造函数里的属性 也能访问原型上的方法

	创建一个新的obj对象 将对象与构造函数通过原型链连接起来 将构造函数中的this绑定到新建的对象obj上
	根据构造函数返回的类型进行判断 如果是原始值将被忽略 如果返回是对象 将会正常处理

11.说一下JavaScript原型 以及原型链的理解

答:
	1.prototype 显示原型
	  每个函数都有一个prototype属性 被称为显示原型 
	  里面包含了构造函数公共的方法
	2.__proto__ 隐式原型
	  每个实例对象都会有__proto__属性 被称为隐式原型 
	  每个隐式原型的实例对象的属性都指向自身构造函数的现实原型prototype中
	3.constructor 
	  每个prototype原型都有一个constructor属性 指向它关联的构造函数
	4.原型链 
	  获取对象属性或方法时 如果对象本身没有这个属性 那就去他的原型__proto__中去找 如果还找不到
	  就去找原型的原型 一直找到最顶层(object.prototype)为止 最顶层也有proto属性 值为null

12.JavaScript中如何实现继承

答:
	js继承方式有很多 主要分为ES5和ES6继承
	ES5继承:
		es5实现继承主要通过prototype来实现的
		实例继承  构造函数继承  组合继承(结合前两者)
	ES6继承: 
		用class来定义类 用extends继承类 用super()表示

13.class与class继承

答:
	传统的js中只有对象 没有类的概念 它是基于面向对象而言的 
	ES5通过构造函数来创建类 ES6通过class关键字来创建类 跟传统的面向对象语言更加接近
	ES5中如果要生成一个对象实例 需要先定义一个构造函数 然后通过new操作符来创建实例
	ES6中引入了class这个概念 通过class关键字定义类  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着阿龙学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值