日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6类的使用和定义.Json.Promise对象的使用

發布時間:2024/1/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6类的使用和定义.Json.Promise对象的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ECMAScript 6-第三講
本章目標:
掌握es6中class類的聲明
掌握類的繼承
Json的新的應用
Promise對象的方法
本章內容:
Class類的聲明:
所謂的java的面向對象和這個很相似,但是在js其實是基于對象的,所謂的基于對象就是一直在用對象而不是,而不是完全使用面向對象的思想,面向對象我們都知道是封裝,繼承,多態,而基于對象,其實就是在使用對象。對象比數組強的地方在于他有屬性和方法。所以在js中很少使用類這個方式。但是在es6中提供了這樣一種聲明方式

class <script>//我們使用以前的方式聲明,是以構造函數的方式聲明的類的屬性function Person(name,age) {this.name = name;this.age = age;}//然后再給這個類加一個方法Person.prototype.say = function () {console.log("我的名字是"+this.name+"今年"+this.age);}//然后聲明一個變量來充當對象var p = new Person("wyh",30);p.say(); </script>

我們看到以前是用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() 反串行化
簡寫:

  • (屬性和值)名字一樣可以簡寫
  • 方法一樣可以簡寫(:function省)
    JSON 的標準寫法:
  • 只能用雙引號(“”);
  • 所有的(屬性)名字只能用雙引號(“”)包起來;
  • json Promise的使用: promise <script>//promise這個對象們主要是用來解決像是異步操作中回調地獄這樣的情況//那么我們先做一個回調函數function demo(fun) {//我們使用&&判斷一下,這個是由短路功能的//如果前面成功就執行后面,如果前面不成功就不執行后面setTimeout(()=>{fun && fun();},1000)}//那么我們在調用demo這個函數的時候需要傳遞一個函數demo(()=>{console.log(1);}) </script>

    那么如果說我們遇到很多層的調用,這時候不光是代碼不優雅,還不容易理解層次關系,我們改進一下這個代碼看看效果

    這時候我們看到他是每間隔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-all Race() 那么我們現在再來看一下race這個方法,這個方法跟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对象的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。