ES6类的使用和定义.Json.Promise对象的使用
ECMAScript 6-第三講
本章目標:
掌握es6中class類的聲明
掌握類的繼承
Json的新的應用
Promise對象的方法
本章內容:
Class類的聲明:
所謂的java的面向對象和這個很相似,但是在js其實是基于對象的,所謂的基于對象就是一直在用對象而不是,而不是完全使用面向對象的思想,面向對象我們都知道是封裝,繼承,多態,而基于對象,其實就是在使用對象。對象比數組強的地方在于他有屬性和方法。所以在js中很少使用類這個方式。但是在es6中提供了這樣一種聲明方式
我們看到以前是用js寫的這種聲明對象的方式很怪異,很不方便,那么再ES6中,給我們提供了類的聲明方式,我們改造一下剛才的例子
那我們看到這個新增的class的聲明方式和我們使用java書寫的時候是不是區別就不大了。
接下來我們就以可以看一下類的另一種特性
Class的繼承:
//我們在原有的基礎上,來看一下ES6 的繼承
class Teacher extends Person{
constructor(name,age,school){
super(name,age);
this.school = school;
}
study(){
console.log(this.name+"="+this.age+"="+this.school);
}
}
let t = new Teacher(“張三豐”,30,“AAA軟件”);
t.say();
t.study();
JSON的新應用:
JSON對象:
JSON.stringify() 串行化
JSON.parse() 反串行化
簡寫:
JSON 的標準寫法:
那么如果說我們遇到很多層的調用,這時候不光是代碼不優雅,還不容易理解層次關系,我們改進一下這個代碼看看效果
這時候我們看到他是每間隔1秒到用一次,那么我們可以像是寫同步一樣的去寫這種代碼么?
我們先來認識一下promise這個對象
Promise:
抽象表達:promise是js進行異步編程的新的解決方案
具體表達:
從語法上來說:promise是一個構造函數
從功能上來說:promise對象用來封裝一個異步操作對象并可以捕獲其結果
狀態的特點
Promise 異步操作有三種狀態:pending(進行中)、fulfilled(已成功)和 rejected(已失敗)。除了異步操作的結果,任何其他操作都無法改變這個狀態。
Promise 對象只有:從 pending 變為 fulfilled 和從 pending 變為 rejected 的狀態改變。只要處于 fulfilled 和 rejected ,狀態就不會再變了即 resolved(已定型)。
狀態的缺點
無法取消 Promise ,一旦新建它就會立即執行,無法中途取消。
如果不設置回調函數,Promise 內部拋出的錯誤,不會反應到外部。
當處于 pending 狀態時,無法得知目前進展到哪一個階段(剛剛開始還是即將完成)。
Promise的執行流程
then 方法
then 方法接收兩個函數作為參數,第一個參數是 Promise 執行成功時的回調,第二個參數是 Promise 執行失敗時的回調,兩個函數只會有一個被調用。
接下來我們使用新的方式改寫一下剛才的調用的方式
//我們使用新的方式來寫一下
function foo() {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve();
},1000)
})
}
foo().then(()=>{
console.log(“a”);
return foo();
}).then(()=>{
console.log(“b”);
return foo();
}).then(()=>{
console.log(“c”);
return foo();
})
Promise中的方法
Catch()
首先介紹一下promise的catch(),這個方法就像是try–catch語句塊一樣,是輸出異常的
我們發現這時候他就會把異常輸出
All()
接下來我們來介紹一下promise的all()
新的promise的例子入門
Promise <script>let p = new Promise((resolve, reject) => {//執行異步任務setTimeout(()=>{const time = Date.now();//如果當前時間是偶數就代表成功,否則代表失敗if(time %2 ==0){//如果成功,調用resolve(value)resolve('成功的數據'+time)}else{// 如果失敗調用rejrct(reason)reject('失敗的數據'+time)}},1000)})p.then(value =>{//接受到成功的數據console.log("成功回調",value);},reason =>{//接受到失敗的數據console.log("失敗的回調",reason);}) </script>總結
以上是生活随笔為你收集整理的ES6类的使用和定义.Json.Promise对象的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6箭头函数和模板字符串
- 下一篇: generator 和 yield的使用