es6 (二)

第四节

9.symbol (一点用都没有)

独一无二的字符串;(类似字符串)

**js里有6种原始数据类型;

10.Promise 异步编程的解决方案 (非常重要)

异步的问题:数据还没传过来,但是已经执行了,数据是undefined

es5中的异步编程解决方案:回调函数;

promise的优势

promise.then().then().then()…

语法;

new Promise(function(resolve,reject){你的操作}) 以函数作为参数

resolve函数是在异步操作成功时调用,并且把异步操作的结果作为参数传递出去;
reject 函数是在操作失败时调用,并且把异步操作的结果作为参数传递出去;
then函数里面接收两个函数当参数,第一个函数是异步操作成功时的函数;第二个函数时异步操作失败时候的函数(可省略)

举例:
let a=10
let promise=new Promise((resolve,reject)=>{
if(a==10){
resolve(“成功”)
}else{
reject("失败“)
}
})

promise.then(res=>{console.log(res)},res=>{console.log(res)})

***promise和ajex 没有任何关系,是回调函数的优化版;

写一个异步的举例:

let status=1
let user=(resolve,reject)=>{
setTimeout(()=>{
if(status==1){
resolve({data:“登陆成功”;msg:“张三”,token:“abc”})
}else{
reject(“失败了”)
},2000)

}
(再复制一个函数)
let admin=(resolve,reject)=>{
setTimeout(()=>{
if(status==1){
resolve({data:“获取用户信息成功”;msg:“李四”,token:“bcd”})
}else{
reject(“失败了”)
},1000)

}

new.Promise(user).then(res=>{console.log(res)})

**promise 在vue中再有实际案例;

10.类,class,可以理解为对象;

叫“语法糖”,为了让后端程序员更容易理解,其实功能并没有很大的改变;

class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}

toString() {
return ‘(’ + this.x + ', ’ + this.y + ‘)’;
}
}

ES6 的类,完全可以看作构造函数的另一种写法。

**在类里面加的函数相当于在原型中加了函数,子集完全可以调用;

把函数和对象分来,class是对象,函数在class类里面;

constructor方法是一定有的,你不加系统默认加;

new和之前的方法一样,创建实例;

**class继承:

Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。

class Point {
}

class ColorPoint extends Point {
}
上面代码定义了一个ColorPoint类,该类通过extends关键字,继承了Point类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个Point类。

下面,我们在ColorPoint内部加上代码。

子集 “extends” 父集

class ColorPoint extends Point {
constructor(x, y, color) {
super(x, y); // 调用父类的constructor(x, y)
this.color = color;
}

toString() {
return this.color + ’ ’ + super.toString(); // 调用父类的toString()
}
}
上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。如果不调用super方法,子类就得不到this对象。

***class 在react中用处非常广


第五节

1.模块化语法

js和js之间是不能互相引用的;

框架中根本不写html

export var a=1;(导出的一定是完整的变量声明语句,比如变量,数组,对象,函数)

import{a} from “/index.js”

import “./ index.js”(引入整个文件)
import “./css/style.css”

2)可以重命名(倒入/导出)

export { my as b}

通常情况下,export输出的变量就是本来的名字,但是可以使用as关键字重命名。

function v1() { … }
function v2() { … }

export {
v1 as streamV1,
v2 as streamV2,
v2 as streamLatestVersion
};
上面代码使用as关键字,重命名了函数v1和v2的对外接口。重命名后,v2可以用不同的名字输出两次。

需要特别注意的是,export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

export default 1 —— default 其实就是变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值