一,原型与原型链
1.原型
每个构造函数都有一个prototype属性,
没个实例都有一个__proto__属性
实例的隐式原型都指向他构造函数的显示原型
2.prototype
每个函数都有一个prototype属性,被称为显示原型
3.proto
每个实例对象都会有__proto__属性,被称其为隐式原型
每一个实例对象的隐式原型__proto__属性指向自身构造函数的显示原型prototype
4.constructor
每个prototype原型都有一个constructor属性,指向它关联的构造函数
二.class与继承
1.ES6中的类
ES6引入了class(类)这个概念,通过class关键字可以定义类。该关键字的出现使得javascript在对象写法上更加清晰,更像是一种面向对象语言。
类的所有方法都定义在类的prototype属性上
可以通过prototype属性对类添加方法
还可以通过Object.assign方法来为对象动态增加方法
constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。
constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例
hasOwnProperty()函数用于判断属性是否是实例属性
in操作符会在通过对象能够访问给定属性时返回true,无论该属性存在于实例中还是原型中
class不存在变量提升
2、ES6中的 class继承
1.父类
2.子类
3.extends关键字
三。Promise
1.什么是Promise?
Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
从语法上说,promise 是一个对象,从它可以获取异步操作的的最终状态(成功或失败)。
Promise是一个构造函数,对外提供统一的 API,自己身上有all、reject、resolve等方法,原型上有then、catch等方法。
Promise的两个特点
- Promise对象的状态不受外界影响
1)pending 初始状态
2)fulfilled 成功状态
3)rejected 失败状态
Promise 有以上三种状态,只有异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个状态 - Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled或者由pending变成rejected
有哪些状态和参数?如何使用?
1、主要用于异步计算
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作 promise,帮助我们处理队列
resolve 作用是,将 Promise 对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
reject 作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
promise 有三个状态:
1、pending[待定]初始状态2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
当 promise 状态发生改变,就会触发 then()里的响应函数处理后续步骤