面向对象:
面向对象是一种编程思想(oop)。
(Js里面所有的东西都可以看做对象,Js它是基于原型的面向对象语言,采用原型的方式来构造对象)
很多个具有相同属性和行为的对象就可以抽象为类,对象是类的一个实例。JavaScript在ECMAScript 6中引入了类的概念。
(js 中所谓的 类 就是构造函数, 对象就是由构造函数创建出来的实例对象。)
面向对象的三个基本特征:
封装:
就是将一类事物的属性和行为抽象成一个类,使其属性私有化,行为公开化,隐藏对象属性和实现细节,仅对外提供访问形式,提高安全性和代码复用性。
继承:
则是进一步将一类事物共有的属性和行为抽象成一个父类,而每个子类拥有父类的行为和属性,也有自己特有的行为和属性,扩展了已存在的代码块,进一步提高了代码的复用性。
多态:
是指允许不同类的对象对同一消息做出不同响应,从一定角度来 看,封装和继承几乎都是为多态而准备的,类中多个方法的重载叫多态,父子类中方法的覆盖也叫多态。提高了软件 的可重用性和可扩充性。
二、什么是promise
Promise 是异步编程的一种解决方案:
语法上来说,Promise 是个构造函数,new Promise创建了一个实列化对象,内部一般可以封装一个异步操作,
resolve,reject 是 promise 内部提供好给你的两个函数
成功调用 resolve
失败调用 reject
语法:
// ------------promise语法------------
// 步骤
// 1. 许下诺言
// 2. 获取诺言的结果
// 1.许下诺言
// Promise 是个构造函数,new Promise创建了一个实列化对象 => 许下一个诺言
let p = new Promise((resolve, reject) => {
// (里面是个回调函数,异步代码封装写入该函数里面)
// 参数是个函数,把异步操作封装写入到该函数里面
console.log('许下诺言,年薪百万')
// 参数resolve,reject都是函数
// 1.2. 许诺成功
// 当调用 resolve(), 会把promise状态变成 fufilled 成功
resolve('成功了')
// 1.3. 许诺失败
// 调用 resject(),会把promise状态变成 reject, 失败(未完成)
// reject('失败了')
})
console.log(p)
//2.获取诺言的结果
// then和catch方法获取诺言成功、失败的结果
p.then((res)=> {
// then方法会在诺言成功的时候来执行
// 参
console.log(res,'恭喜你,成功年薪百万')
}).cath((err)=>{
})
使用promise 对象
p.then(res => {...}) 处理成功
.catch(res => {...}) 处理失败
案例:
<button>承诺: 今天学会promise</button>
document.querySelector('button').onclick = function () {
// 点击按钮的时候,许下一个诺言
let p = new Promise((resolve, reject) => {
console.log('我许下了承诺');
// 异步代码
setTimeout(() => {
// 随机一个数字,表示年薪
let money = parseInt(Math.random() * 200)
console.log(money)
if (money >= 100) {
resolve(`我现在年薪${money}万了`)
} else {
reject('诺言失败')
}
}, 1000)
})
2)从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。
promise有三种状态: pending(等待态),fulfiled(成功),rejected(失败)
总结:
![](https://img-blog.csdnimg.cn/img_convert/fab69acdb22346119a04129cdfcf56ef.png)
三、Promise和async、await的关系
async 可以创建一个异步函数
异步函数的返回值会自动封装到一个promise中返回
在async声明的异步函数中可以使用await关键字来调用异步函数