理解js原型链,继承和promis
Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled或者由pending变成rejected
二、继承1、原型链继承
prototype
.then()里面有.then()的情况
5、寄生式继承
reject函数的作用:在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
3、可以继承多个构造函数属性(call多个)。2、.then()返回一个新的Promise实例,所以它可以链式调用
2、无法实现构造函数的复用。(每次用每次都要重新调用)
1、因为.then()返回的还是Promise实例
从pending变为fulfilled
缺点:没用到原型,无法复用。
每个prototype原型都有一个constructor属性,指向它关联的构造函数。 Promise是一个构造函数,对外提供统一的 API,自己身上有all、reject、resolve等方法,原型上有then、catch等方法。
promise状态一经改变,不会再变。
3、rejected[被否决]操作失败
原型链
缺点:1、所有实例都会继承原型上的属性。
什么是Promise?
.then()
组合:1、函数的原型等于另一个实例。2、在函数中用apply或者call引入另一个构造函数,可传参
const promise = new Promise((resolve, reject) => {
// do something here ...
if (success) {
resolve(value); // fulfilled } else {
reject(error); // rejected }});
resolve作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
6、如果返回其他任何值,则会立即执行下一级.then()
当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
Promise对象的状态改变,只有两种可能:
2、解决了原型链继承缺点1、2、3。
每个函数都有一个prototype属性,被称为显示原型
2、每个新实例引入的构造函数属性是私有的。
3)rejected 失败状态
4、状态响应函数可以返回新的promise,或其他值,不返回值也可以我们可以认为它返回了一个null;重点:用.call()和.apply()将父类构造函数引入子类函数(在子类函数中做了父类函数的自执行(复制))
constructor
3、组合继承(组合原型链继承和借用构造函数继承)(常用)
重点:修复了组合继承的问题
Promise对象的状态不受外界影响 这些继承模式的学习重点是学它们的思想,不然你会在coding书本上的例子的时候,会觉得明明可以直接继承为什么还要搞这么麻烦。就像原型式继承它用函数复制了内部对象的一个副本,这样不仅可以继承内部对象的属性,还能把函数(对象,来源内部对象的返回)随意调用,给它们添加属性,改个参数就可以改变原型对象,而这些新增的属性也不会相互影响。
promise(首字母小写)对象指的是“Promise实例对象”
特点:1、可以继承父类原型上的属性,可以传参,可复用。获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype)为止。Object.prototype对象也有__proto__属性值为null。 重点:结合了两种模式的优点,传参和复用
resolve函数的作用:在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
缺点:1、只能继承父类构造函数的属性。父类(基类) 特点:1、只继承了父类构造函数的属性,没有继承父类原型的属性。
2)fulfilled 成功状态
Promise首字母大写且单数形式,表示“Promise构造函数”
3、所有新实例都会共享父类实例的属性。(原型上的属性是共享的,一个实例修改了原型属性,另一个实例的原型属性也会被修改!)子类
2、无法实现复用。(新实例属性都是后面添加的)重点:就是给原型式继承外面套了个壳子。
特点:1、实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性。(新实例不会继承父类实例的属性!)
重点:用一个函数包装一个对象,然后返回这个函数的调用,这个函数就变成了个可以随意增添属性的实例或对象。object.create()就是这个原理。
extends 关键字
Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。4、原型式继承
Promises首字母大写且复数形式,用于指代“Promises规范”
Promise 有以上三种状态,只有异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个状态
2、继承单一。promise有三个状态:
缺点:1、新实例无法向父类构造函数传参。
缺点:调用了两次父类构造函数(耗内存),子类的构造函数会代替原型上的那个父类构造函数。
1)pending 初始状态
从pending变为rejected。 每个实例对象都会有_ proto _属性,其被称为隐式原型 1、pending[待定]初始状态6、寄生组合式继承(常用)
继承这些知识点与其说是对象的继承,更像是函数的功能用法,如何用函数做到复用,组合,这些和使用继承的思考是一样的。上述几个继承的方法都可以手动修复他们的缺点,但就是多了这个手动修复就变成了另一种继承模式。
//class 相当于es5中构造函数//class中定义方法时,前后不能加function,全部定义在class的protopyte属性中//class中定义的所有方法是不可枚举的//class中只能定义方法,不能定义对象,变量等//class和方法内默认都是严格模式//es5中constructor为隐式属性//父类
class People{
constructor(name='wang',age='27'){
this.name = name;
this.age = age;
}
eat(){
console.log(`${this.name} ${this.age} eat food`)
}}//子类 通过extends 继承父类
class Woman extends People{
constructor(name = 'ren',age = '27'){
//继承父类属性
super(name, age);
}
eat(){
//继承父类方法
super.eat()
} } let wonmanObj=new Woman('xiaoxiami'); wonmanObj.eat();三、promise
一般来讲,有以下的名词约定:
从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(成功或失败)。ES6中的 class继承:
特点:类似于复制一个对象,用函数来包装。
reject作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
优点:没有创建自定义类型,因为只是套了个壳子返回对象(这个),这个函数顺理成章就成了创建的新对象。
3、当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行

3、每个新实例都有父类构造函数的副本,臃肿。 寄生:在函数内返回对象然后调用
2._ proto _
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)
开局一张图
4、在子实例中可向父实例传参。
2、借用构造函数继承
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
2、会等里面的then()执行完,再执行外面的
Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。这两个函数就是就是「回调函数」
每一个实例对象的隐式原型_ proto _属性指向自身构造函数的显式原型prototype
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/javascript/6512.shtml
相关文章
热门TAG
服务器 命令 技巧 详解 调用 标签 功能 织梦 javascript dedecms修改内容 织梦教程 php 白帽 企业网站 外链 权重 MYSQL 网站流量 实例解析 JSP 网站收录 搜索引擎 蜘蛛 windows jquery jquery教程 python tags标签 HTML 织梦cms最新文章
-
Javascript是什么?
时间:2021-01-04
-
Canvas入门实战之实现一个
时间:2021-01-04
-
11月份GitHub上最热门的Ja
时间:2021-01-04
-
一篇带给你JavaScript的Cla
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
深入理解JavaScript中的箭头
时间:2021-01-04
-
复盘Node项目中遇到的13+常
时间:2021-01-04
-
连续3年稳居第一,全球
时间:2021-01-04
热门文章
-
连续3年稳居第一,全球1240万用户,Java
时间:2021-01-04
-
一篇带给你JavaScript的Class语法介绍
时间:2021-01-04
-
深入理解JavaScript中的箭头函数
时间:2021-01-04
-
Javascript在Chrome浏览器中调试的七个步骤
时间:2021-01-04
-
Canvas入门实战之实现一个图形验证码
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
复盘Node项目中遇到的13+常见问题和解决方
时间:2021-01-04
-
11月份GitHub上最热门的JavaScript开源项目
时间:2021-01-04
-
Javascript是什么?
时间:2021-01-04
