javascript

推荐列表 站点导航

当前位置:首页 > 脚本编程 > javascript >

理解js原型链,继承和promis

来源:网络整理  作者:  发布时间:2020-12-21 06:00
javascript栏目介绍原型链,继承和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的两个特点
    
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()根据其最终状态,选择特定的状态响应函数执行

在这里插入图片描述

2、fulfilled[实现]操作成功

       3、每个新实例都有父类构造函数的副本,臃肿。

    寄生:在函数内返回对象然后调用

2._ proto _
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)

开局一张图
       4、在子实例中可向父实例传参。
2、借用构造函数继承
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
2、会等里面的then()执行完,再执行外面的

使用 new 来创建一个promise对象。

Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。这两个函数就是就是「回调函数」

每一个实例对象的隐式原型_ proto _属性指向自身构造函数的显式原型prototype

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/javascript/6512.shtml

最新文章
Javascript是什么? Javascript是什么?

时间:2021-01-04

Canvas入门实战之实现一个 Canvas入门实战之实现一个

时间:2021-01-04

11月份GitHub上最热门的Ja 11月份GitHub上最热门的Ja

时间:2021-01-04

一篇带给你JavaScript的Cla 一篇带给你JavaScript的Cla

时间:2021-01-04

详解js异步文件加载器 详解js异步文件加载器

时间:2021-01-04

深入理解JavaScript中的箭头 深入理解JavaScript中的箭头

时间:2021-01-04

复盘Node项目中遇到的13+常 复盘Node项目中遇到的13+常

时间:2021-01-04

连续3年稳居第一,全球 连续3年稳居第一,全球

时间:2021-01-04

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

理解js原型链,继承和promis

2020-12-21 编辑:

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的两个特点
    
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()根据其最终状态,选择特定的状态响应函数执行

在这里插入图片描述

2、fulfilled[实现]操作成功

       3、每个新实例都有父类构造函数的副本,臃肿。

    寄生:在函数内返回对象然后调用

2._ proto _
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)

开局一张图
       4、在子实例中可向父实例传参。
2、借用构造函数继承
5、如果返回新的promise,那么下一级.then()会在新的promise状态改变之后执行
2、会等里面的then()执行完,再执行外面的

使用 new 来创建一个promise对象。

Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。这两个函数就是就是「回调函数」

每一个实例对象的隐式原型_ proto _属性指向自身构造函数的显式原型prototype

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/jiaob/javascript/6512.shtml

相关文章

风云图片

推荐阅读

返回javascript频道首页