日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jses6 新特性,以及es7/8/9 或,常用特性

發布時間:2024/3/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jses6 新特性,以及es7/8/9 或,常用特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、es6

1.1 class類

1.1.1 類的基本使用

class Person {// 注意: 一個類只能有一個構造函數// 當我們通過 new 關鍵字操作類的時候,會調用這個 constructor 函數,并且執行如下操作// 1.在內存中創建一個對象 moni = {}// 2.將類的原型prototype賦值給創建出來的對象 moni.__proto__ = Person.prototype// 3.將對象賦值給函數的this: new綁定 this = moni// 4.執行函數體中的代碼// 5.自動返回創建出來的對象constructor(name, age) {this.name = name;this.age = age;} } var p1 = new Person("呆呆狗", 20); console.log(p1);

1.1.2 類的方法

var names = ["abc", "cba", "nba"]; class Person {constructor(name, age) {this.name = name;this.age = age;this._address = "山東";}// 其實這個方法,會被放到 Person的原型身上eating() {console.log(this.name + " eating·~");}// 類的訪問器方法get address() {console.log("攔截訪問操作");return this._address;}set address(newAddress) {console.log("攔截設置操作");this._address = newAddress;}// 類的靜態方法,也稱為 類方法, 直接通過類名. d// Person.randomPerson 可以直接這樣訪問static randomPerson() {var nameIndex = Math.floor(Math.random() * names.length);var name = names[nameIndex];var age = Math.floor(Math.random() * 100);return new Person(name, age);} } var p1 = new Person("呆呆狗", 20); console.log(p1); p1.eating(); p1.address = "青島"; console.log("p1修改address后的", p1); // console.log(p1.randomPerson()); //這樣調用是錯誤的 console.log(Person.randomPerson());

1.2 字面量的增強

var name = "ddg" var age = 18 var obj = {// 屬性的簡寫name,age,// 方法的簡寫foo() {},[name + '134']: "哈哈哈哈嗝" } console.log(obj);

1.3 解構

數組的解構

var names = ["abc", "cba", "nba"] // var item1 = names[0] // var item2 = names[1] // var item3 = names[2]// 對數組的解構: [] var [item1, item2, item3] = names console.log(item1, item2, item3)// 解構后面的元素 var [, , itemz] = names console.log(itemz)// 解構出一個元素,后面的元素放到一個新數組中 var [itemx, ...newNames] = names console.log(itemx, newNames)// 解構的默認值 var [itema, itemb, itemc, itemd = "aaa"] = names console.log(itemd)

對象的解構

var obj = {name: "why",age: 18,height: 1.88 }// 對象的解構: {} var { name, age, height } = obj console.log(name, age, height)var { age } = obj console.log(age)var { name: newName } = obj console.log(newName)var { address: newAddress = "廣州市" } = obj console.log(newAddress) // 廣州市function foo(info) {console.log(info.name, info.age) }foo(obj)function bar({ name, age }) {console.log(name, age) }bar(obj)

1.4 let const

  • const本質上傳遞的值 是不可以修改的,(引用類型除外)
  • let 、const 不可以重復定義相同名字的變量
  • let/const他們是沒有作用域提升
// var foo = "foo" // let bar = "bar"// const constant(常量/衡量) // const name = "abc" // name = "cba"// 注意事項一: const本質上是傳遞的值不可以修改 // 但是如果傳遞的是一個引用類型(內存地址), 可以通過引用找到對應的對象, 去修改對象內部的屬性, 這個是可以的 // const obj = { // foo: "foo" // }// // obj = {} // obj.foo = "aaa" // console.log(obj.foo)// 注意事項二: 通過let/const定義的變量名是不可以重復定義 // var foo = "abc" // var foo = "cba"let foo = "abc" // SyntaxError: Identifier 'foo' has already been declared let foo = "cba"console.log(foo)

1.5 es5的作用域

// 聲明對象的字面量 // var obj = { // name: "why" // }// ES5中沒有塊級作用域 // 塊代碼(block code) // { // // 聲明一個變量 ,在es5 的時候,這個大括號,沒有意義 // var foo = "foo" // }// console.log(foo)// 在ES5中只有兩個東西會形成作用域 // 1.全局作用域 // 2.函數作用域 // function foo() { // var bar = "bar" // }// console.log(bar) // 訪問不到function foo() {function demo() {} }

1.6 es6的作用域

// ES6的代碼塊級作用域 // 對let/const/function/class聲明的類型是有效 {let foo = "why"function demo() {console.log("demo function")}class Person { } }// console.log(foo) // foo is not defined // 不同的瀏覽器有不同實現的(大部分瀏覽器為了兼容以前的代碼, 讓function是沒有塊級作用域) // demo() // 可以調用 var p = new Person() // Person is not defined {}// if語句的代碼就是塊級作用域 // if (true) { // var foo = "foo" // let bar = "bar" // }// console.log(foo) // 可以訪問 // console.log(bar) // 不可以訪問// switch語句的代碼也是塊級作用域 // var color = "red"// switch (color) { // case "red": // var foo = "foo" // let bar = "bar" // }// console.log(foo) // 可以訪問 // console.log(bar) // 不可以訪問// for語句的代碼也是塊級作用域 // for (var i = 0; i < 10; i++) { // // console.log("Hello World" + i) // }// console.log(i) //可以訪問for (let i = 0; i < 10; i++) { }console.log(i) // 不可以訪問

1.7 塊級作用域的應用場景

const btns = document.getElementsByTagName('button')// for (var i = 0; i < btns.length; i++) { // (function(n) { // btns[i].onclick = function() { // console.log("第" + n + "個按鈕被點擊") // } // })(i) // }// console.log(i)for (var i = 0; i < btns.length; i++) {btns[i].onclick = function () {console.log("第" + i + "個按鈕被點擊")// 點擊的時候 輸出的 永遠是 第4個按鈕被點擊} }console.log(i)

1.8 模板字符串

// ES6之前拼接字符串和其他標識符 const name = "why" const age = 18 const height = 1.88// console.log("my name is " + name + ", age is " + age + ", height is " + height)// ES6提供模板字符串 `` const message = `my name is ${name}, age is ${age}, height is ${height}` console.log(message)const info = `age double is ${age * 2}` console.log(info)function doubleAge() {return age * 2 }const info2 = `double age is ${doubleAge()}` console.log(info2)

1.9 模板字符串調用函數

// 第一個參數依然是模塊字符串中整個字符串, 只是被切成多塊,放到了一個數組中 // 第二個參數是模塊字符串中, 第一個 ${} function foo(m, n, x) {console.log(m, n, x, "---------");// 如果是 模板字符串調用的方式// 輸出結果是: ['Hello', 'Wo', 'rld', raw: Array(3)] 'why' 18 '---------' }// foo("Hello", "World")// 另外調用函數的方式: 標簽模塊字符串 // foo``// foo`Hello World` const name = "why"; const age = 18; // ['Hello', 'Wo', 'rld'] foo`Hello${name}Wo${age}rld`;

1.10 函數的默認參數

// ES5以及之前給參數默認值 /*** 缺點:* 1.寫起來很麻煩, 并且代碼的閱讀性是比較差* 2.這種寫法是有bug*/ // function foo(m, n) { // m = m || "aaa" // n = n || "bbb"// console.log(m, n) // }// 1.ES6可以給函數參數提供默認值 function foo(m = "aaa", n = "bbb") {console.log(m, n) }// foo() foo(0, "")// 2.對象參數和默認值以及解構 // 給它一個 有 name 和 age 的對象 function printInfo({ name, age } = { name: "why", age: 18 }) {console.log(name, age) }printInfo({ name: "kobe", age: 40 })// 另外一種寫法 // 給它一個空對象,然后 添加默認值 function printInfo1({ name = "why", age = 18 } = {}) {console.log(name, age) }printInfo1()// 3.有默認值的形參最好放到最后 function bar(x, y, z = 30) {console.log(x, y, z) }// bar(10, 20) bar(undefined, 10, 20)// 4.有默認值的函數的length屬性 function baz(x, y, z, m, n = 30) {console.log(x, y, z, m, n) }console.log(baz.length) // 有默認值的參數開始往后都不算在length里面 ,有默認值的參數,不算在 length

1.11 函數的剩余參數

// 函數的剩余參數 function foo(first, ...arr) {console.log(first, arr); //1 , [2, 3, 4, 5, 6] } foo(1, 2, 3, 4, 5, 6);

1.12 箭頭函數

  • 相比以前,有更簡單的寫法
  • 箭頭函數不綁定this,會捕獲其所在上下文的this,作為自己的this
  • 箭頭函數是匿名函數,不能作為構造函數,不可以使用new命令,否則后拋出錯誤
  • 箭頭函數不綁定arguments
  • 使用call,apply,bind并不會改變箭頭函數中的this指向
  • 箭頭函數沒有原型對象prototype這個屬性
  • 1.13 展開運算符

    • 展開語法(Spread syntax)
      • 可以在函數調用/數組構造時,將數組表達式或者string在語法層面展開
      • 還可以在構造字面量對象時,將對象表達式按key-value的方式展開
    • 展開語法的場景
      • 在函數調用時
      • 在數組構造時
      • 在構造對象字面量時,也可以使用展開運算符,(ES9,es2018增加的)
    const names = ["abc", "cba", "nba"] const name = "why" const info = {name: "why", age: 18}// 1.函數調用時 function foo(x, y, z) {console.log(x, y, z) }// foo.apply(null, names) foo(...names) foo(...name)// 2.構造數組時 const newNames = [...names, ...name] console.log(newNames)// 3.構建對象字面量時ES2018(ES9) const obj = { ...info, address: "廣州市", ...names } console.log(obj)

    1.14 Symbol

    // 2.ES6中Symbol的基本使用 const s1 = Symbol() const s2 = Symbol()console.log(s1 === s2)// ES2019(ES10)中, Symbol還有一個描述(description) const s3 = Symbol("s3的描述") console.log(s3.description)// 's3的描述'// 3.Symbol值作為key // 3.1.在定義對象字面量時使用 const obj = {[s1]: "abc",[s2]: "cba" }// 3.2.新增屬性 obj[s3] = "nba" console.log('obj', obj); // 3.3.Object.defineProperty方式 const s4 = Symbol() Object.defineProperty(obj, s4, {enumerable: true, // 是否可枚舉configurable: true, // 是否可刪除writable: true, // 是否可重寫value: "mba" })console.log(obj[s1], obj[s2], obj[s3], obj[s4]) // 注意: 不能通過.語法獲取 // console.log(obj.s1)// 4.使用Symbol作為key的屬性名,在遍歷/Object.keys等中是獲取不到這些Symbol值 // 需要Object.getOwnPropertySymbols來獲取所有Symbol的key console.log(Object.keys(obj)) console.log(Object.getOwnPropertyNames(obj)) console.log(Object.getOwnPropertySymbols(obj)) const sKeys = Object.getOwnPropertySymbols(obj) for (const sKey of sKeys) {console.log(obj[sKey]) }// 5.Symbol.for(key)/Symbol.keyFor(symbol) const sa = Symbol.for("aaa") const sb = Symbol.for("aaa") console.log(sa === sb) // 在key 相同的情況下,他倆是一樣的const key = Symbol.keyFor(sa) console.log(key) // 返回 sa 的 key const sc = Symbol.for(key) console.log(sa === sc)console.log('~~~~~~~~~~~~~'); const ddg1 = Symbol('呆呆狗') const ddg2 = Symbol('呆呆狗') console.log(ddg1 === ddg2); // 不相等

    1.15 Set

    // 10, 20, 40, 333 // 1.創建Set結構 const set = new Set() set.add(10) set.add(20) set.add(40) set.add(333)set.add(10)// 2.添加對象時特別注意: 會創建出來兩個對象,他們兩個指向的是不同的地址 set.add({}) set.add({})const obj = {} set.add(obj) // 這個時候存放的就是同一個對象,添加的地址都是同一個 set.add(obj)// console.log(set)// 3.對數組去重(去除重復的元素) const arr = [33, 10, 26, 30, 33, 26] // const newArr = [] // for (const item of arr) { // if (newArr.indexOf(item) !== -1) { // newArr.push(item) // } // }const arrSet = new Set(arr) // const newArr = Array.from(arrSet) // const newArr = [...arrSet] // console.log(newArr)// 4.size屬性 console.log(arrSet.size)// 5.Set的方法 // add arrSet.add(100) console.log(arrSet)// delete arrSet.delete(33) console.log(arrSet)// has console.log(arrSet.has(100))// clear // arrSet.clear() console.log(arrSet)// 6.對Set進行遍歷 1.forEach or for of arrSet.forEach(item => {console.log(item) })for (const item of arrSet) {console.log(item) }

    1.16 WeakSet

    和Set 類似,也是內部元素不能重復的數據結構

    其實它的應用場景很少

    • WeakSet 中只能存放 對象類型 ,不能存放基本數據類型
    • WeakSet 對元素的引用是弱引用,如果沒有其他引用對某個對象進行引用,那么GC可以對該對象進行回收

    常見方法

    • WeakSet 常見的方法
      • add(value):添加某個元素,返回WeakSet對象本身
      • delete(value):從WeakSet中刪除和這個值相等的元素,返回Boolean類型
      • has(value):判斷WeakSet中是否存在某個元素,返回布爾類型
    • 注意:WeakSet 不能遍歷
      • 因為WeakSet 只是對對象的弱引用,如果我們遍歷獲取到其中的元素,那么有可能造成對象不能正常的銷毀
      • 所以存儲到WeakSet 的對象,是沒辦法獲取的


    假設,是Set 結構,把 obj = null 以后, 0x100也不會銷毀,因為Set里面 還有一個元素在引用著 0x100

    如果是 WeakSet 結構,obj=null 以后,0x100 會被回收的。因為如果沒有其他引用對 0x100 進行引用,所以0x100 會被回收

    1.17 Map

    map數據結構,用于存儲映射關系
    之前,對象只能用字符串/Symbol來作為 key,

    // 1.JavaScript中對象中是不能使用對象來作為key的 const obj1 = { name: "why" } const obj2 = { name: "kobe" }// const info = { // [obj1]: "aaa", // [obj2]: "bbb" // }// 當我們把 obj1 作為對象key 的時候,它會轉成字符串格式 作為key, obj2也是如此,并且轉換完的結果是一樣的 // console.log(info) // { '[object Object] : ' : 'bbb' }// 2.Map就是允許我們對象類型來作為key的 // 構造方法的使用 const map = new Map() map.set(obj1, "aaa") map.set(obj2, "bbb") map.set(1, "ccc") console.log('map', map) // {{…} => 'aaa', {…} => 'bbb', 1 => 'ccc'}// 如果要傳遞一個數組,則必須按照 [ [key,value],[key,value] ] ,數組套數組,第二層數組里面是 key,value const map2 = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ddd"]]) console.log('map2', map2)// 3.常見的屬性和方法 console.log(map2.size)// set map2.set("why", "eee") console.log(map2)// get(key) console.log(map2.get("why"))// has(key) console.log(map2.has("why"))// delete(key) map2.delete("why") console.log(map2)// clear // map2.clear() // console.log(map2)// 4.遍歷map map2.forEach((item, key) => {console.log(item, key) })for (const item of map2) {console.log(item[0], item[1]) }for (const [key, value] of map2) {console.log(key, value) }

    1.18 WeakMap

    在vue3的響應式原理,就用到了

    • 區別一:WeakMap的key只能使用對象,不接受其他的類型作為key;

    • 區別二:WeakMap的key對對象想的引用是弱引用,如果沒有其他引用引用這個對象,那么GC可以回收該對象;

    WeakMap常見方法

    • set(key, value):在Map中添加key、value,并且返回整個Map對象;

    • get(key):根據key獲取Map中的value;

    • has(key):判斷是否包括某一個key,返回Boolean類型;

    • delete(key):根據key刪除一個鍵值對,返回Boolean類型;


    假設,是Map 結構,把 obj = null 以后, 0x100也不會銷毀,因為map里面 還有一個key 在引用著 0x100

    如果是 WeakMap 結構,obj=null 以后,0x100 會被回收的。因為如果沒有其他引用對 0x100 進行引用,所以0x100 會被回收

    1.19 promise

    1.19.1 Promise.resolve

    /*** resolve(參數)* 1> 普通的值或者對象 pending -> fulfilled* 2> 傳入一個Promise* 那么當前的Promise的狀態會由傳入的Promise來決定* 相當于狀態進行了移交* 3> 傳入一個對象, 并且這個對象有實現then方法(并且這個對象是實現了thenable接口)* 那么也會執行該then方法, 并且又該then方法決定后續狀態*/// 1.傳入Promise的特殊情況 // const newPromise = new Promise((resolve, reject) => { // // resolve("aaaaaa") // reject("err message") // })// new Promise((resolve, reject) => { // // pending -> fulfilled // resolve(newPromise) // }).then(res => { // console.log("res:", res) // }, err => { // console.log("err:", err) // })// 2.傳入一個對象, 這個兌現有then方法 new Promise((resolve, reject) => {// pending -> fulfilledconst obj = {then: function (resolve, reject) {// resolve("resolve message")reject("reject message")}}resolve(obj) }).then(res => {console.log("res:", res) // 這里的res 或者err 并不是 obj 這個對象,而是obj.then 這個方法里面的 傳遞過來的值,因為這個obj 對象 有 then 方法,所以會默認執行這個方法 }, err => {console.log("err:", err) })// eatable/runable const obj = {eat: function () {},run: function () {} }

    1.19.2 Promise.then

    • 同一個promise,可以被多次調用 then 方法
    • then 方法傳入的回調函數,也是擁有返回值的
      • 如果我們返回的是一個普通值(數值/字符串/普通對象/undefined), 那么這個普通的值被作為一個新的Promise的resolve值(就是說可以鏈式調用)
      • 如果我們返回的是一個Promise,繼續鏈式調用
      • 如果返回的是一個對象, 并且該對象實現了thenable,相當于返回了一個新的promise
    // Promise有哪些對象方法 // console.log(Object.getOwnPropertyDescriptors(Promise.prototype)) // catch、constructor、finally、then、Symbolconst promise = new Promise((resolve, reject) => {resolve("hahaha") })// 1.同一個Promise可以被多次調用then方法 // 當我們的resolve方法被回調時, 所有的then方法傳入的回調函數都會被調用 // 就是說控制臺會輸出 res1、res2、res3 // promise.then(res => { // console.log("res1:", res) // })// promise.then(res => { // console.log("res2:", res) // })// promise.then(res => { // console.log("res3:", res) // })// 2.then方法傳入的 "回調函數: 可以有返回值 // then方法本身也是有返回值的, 它的返回值是Promise// 1> 如果我們返回的是一個普通值(數值/字符串/普通對象/undefined), 那么這個普通的值被作為一個新的Promise的resolve值 // promise.then(res => { // console.log('then第1層'); // return "aaaaaa" // }).then(res => { // console.log('then第2層', "res:", res) // 此時的 res 是前面的 return 的值的promise // return "bbbbbb" // })// 2> 如果我們返回的是一個Promise // promise.then(res => { // return new Promise((resolve, reject) => { // setTimeout(() => { // resolve(111111) // }, 3000) // }) // }).then(res => { // console.log("res:", res) // })// 3> 如果返回的是一個對象, 并且該對象實現了thenable // 返回一個對象,仍然會生成一個新的promise promise.then(res => {return {then: function (resolve, reject) {resolve(222222)}} }).then(res => {console.log("res:", res) })

    1.19.3 Promise.catch

    事實上catch方法也是會返回一個Promise對象的,所以catch方法后面我們可以繼續調用then方法或者catch方法

    // catch 也可以多次調用 const promise = new Promise((resolve, reject) => {reject("111111") }) promise.then(() => { }, (err) => {// 如果 new Promise 參數的回調,執行 reject() ,那么 這里就會捕捉到,而不會執行.catchconsole.log('then里面失敗的回調');throw new Error('222') }).catch(err => {console.log('catch失敗的回調'); })promise.catch(() => {console.log('第二個catch'); })

    1.19.4 Promise.finally

    finally是在ES9(ES2018)中新增的一個特性:表示無論Promise對象無論變成fulfilled還是reject狀態,最終都會被執行的代碼。

    finally方法是不接收參數的,因為無論前面是fulfilled狀態,還是reject狀態,它都會執行。

    const promise = new Promise((resolve, reject) => {// resolve("resolve message")reject("reject message") })promise.then(res => {console.log("res:", res) }).catch(err => {console.log("err:", err) }).finally(() => {console.log("finally code execute") })

    1.19.5 Promise.resolve

    Promise.resolve的用法相當于new Promise,并且執行resolve操作,它的返回值是一個promise

    resolve參數的形態

    • 情況一:參數是一個普通的值或者對象
    • 情況二:參數本身是promise
    • 情況三:參數是一個thenable
    const promise = Promise.resolve({ name: "why" }) // 相當于 const promise2 = new Promise((resolve, reject) => {resolve({ name: "why" }) })// 2.傳入Promise const promise = Promise.resolve(new Promise((resolve, reject) => {resolve("11111")// reject('錯誤') // 如果執行 reject() 那邊會走到 catch }))promise.then(res => {console.log("res:", res) }).catch(err => {console.log(err); })

    1.19.6 Promise.reject

    reject方法類似于resolve方法,只是會將Promise對象的狀態設置為reject狀態

    Promise.reject的用法相當于new Promise,只是會調用reject

    const promise1 = Promise.reject(new Promise(() => { }))promise1.then(res => {console.log("res1:", res) }).catch(err => {console.log("err1:", err)// 這個時候,以 new Primise 的狀態為準,但是這個promise 現在的狀態是 pending }) const promise2 = Promise.reject(new Promise((resolve, reject) => {resolve('promise2 成功') }))promise2.then(res => {console.log("res2:", res) }).catch(err => {// 因為 Promise.reject // 還是會走這個 錯誤的回調,console.log("err2:", err)return err }).then(res => {// 如果 .catch 里面沒有 return err ,那么在then 里面則會輸出 undefined// 這里會輸出 promise2 成功console.log('Promise.reject里面的成功回調的監聽: ', res); })

    1.19.7 Promise.all

    // 創建多個Promise const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve(11111)}, 1000); })const p2 = new Promise((resolve, reject) => {setTimeout(() => {reject(22222)// resolve(222)}, 2000); })const p3 = new Promise((resolve, reject) => {setTimeout(() => {resolve(33333)}, 3000); })// 需求: 所有的Promise都變成fulfilled時, 再拿到結果 // 意外: 在拿到所有結果之前, 有一個promise變成了rejected, 那么整個promise是rejected /*** Promise.all 返回值是一個數組。和 參數 順序相同的一個數組* 它的參數如果不是 promise,也會轉成promise* 它是等所有的promise都成功,以后在執行* 如果有一個promise 調用了 reject 那么 會直接走 catch * */Promise.all([p2, p1, p3, "aaaa"]).then(res => {console.log(res) }).catch(err => {console.log("err:", err) })

    1.19.8 Promise.allSettled

    • all方法有一個缺陷:當有其中一個Promise變成reject狀態時,新Promise就會立即變成對應的reject狀態
      • 那么對于resolved的,以及依然處于pending狀態的Promise,我們是獲取不到對應的結果的
    • 在ES11(ES2020)中,添加了新的API Promise.allSettled
      • 該方法會在所有的Promise都有結果(settled),無論是fulfilled,還是reject時,才會有最終的狀態
      • 并且這個Promise的結果一定是fulfilled的
    // 創建多個Promise const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve(11111)}, 1000); })const p2 = new Promise((resolve, reject) => {setTimeout(() => {reject(22222)}, 2000); })const p3 = new Promise((resolve, reject) => {setTimeout(() => {resolve(33333)}, 3000); })// allSettled /** * 它的返回值是一個數組,數組里面是一個對象* [{"status": "fulfilled","value": 11111},{"status": "rejected","reason": 22222},{"status": "fulfilled","value": 33333} ] */ Promise.allSettled([p1, p2, p3]).then(res => {console.log(res) }).catch(err => {console.log(err) })

    1.19.9 Promise.race

    race是競技、競賽的意思,表示多個Promise相互競爭,誰先有結果,那么就使用誰的結果

    // 創建多個Promise const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve(11111)}, 3000); })const p2 = new Promise((resolve, reject) => {setTimeout(() => {reject(22222)}, 500); })const p3 = new Promise((resolve, reject) => {setTimeout(() => {resolve(33333)}, 1000); })// race: 競技/競賽 // 只要有一個Promise變成fulfilled(完成狀態)狀態, 那么就結束 // 意外: Promise.race([p1, p2, p3]).then(res => {console.log("res:", res) }).catch(err => {console.log("err:", err) })

    1.19.10 Promise.any

    any方法是ES12中新增的方法,和race方法是類似的

    • any方法會等到一個fulfilled狀態,才會決定新Promise的狀態
    • 如果所有的Promise都是reject的,那么也會等到所有的Promise都變成rejected狀態
    • 如果所有的Promise都是reject的,那么會報一個AggregateError的錯誤

    2、es7

    2.1 includes

    const names = ["abc", "cba", "nba", "mba", NaN]if (names.indexOf("cba") !== -1) {console.log("包含abc元素") }// ES7 ES2016 // 第二個參數,從 索引值2 開始 if (names.includes("cba", 2)) {console.log('從2查找包含 cba'); }if (names.indexOf(NaN) !== -1) {// 不可以判斷是否有 NaNconsole.log("包含NaN") }if (names.includes(NaN)) {// 可以正確判斷 是否有 NaNconsole.log("包含NaN,includes") }

    2.2 指數運算

    const result1 = Math.pow(3, 3) // ES7: ** const result2 = 3 ** 3 console.log(result1, result2)

    3、es8

    3.1 Object.keys

    const obj = {name: "呆呆狗",age: 20 }console.log(Object.keys(obj)); // [ 'name', 'age' ] console.log(Object.values(obj));// [ '呆呆狗', 20 ] // Object.values如果傳入數組,那么返回的就是數組本身 // Object.values如果傳入字符串,那么返回值,是把 字符串分割成數組

    3.2 Object.entries

    const obj = {name: "呆呆狗",age: 20 }console.log(Object.entries(obj)); // [ [ 'name', '呆呆狗' ], [ 'age', 20 ] ] const objEntries = Object.entries(obj) objEntries.forEach(item => {console.log(item[0], item[1]); })console.log(Object.entries(['a', 'b', 'c'])); // [ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ] console.log(Object.entries('abc')); // [ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ]

    3.3 padStart padEnd

    const message = "Hello World" // 第一個參數,是字符串填充完的長度,第二個參數默認是空格 const newMessage = message.padStart(15, "*").padEnd(20, "-") console.log(newMessage) // ****Hello World-----// 案例 const cardNumber = "321324234242342342341312" const lastFourCard = cardNumber.slice(-4)//截取最后四位 const finalCard = lastFourCard.padStart(cardNumber.length, "*") console.log(finalCard) // ********************1312

    3.4 Trailing-Commas

    function foo(m, n,) {}foo(20, 30,) // 最后多加一個逗號 是沒事的

    3.5 async await

    先空著

    3.6 Object.getOwnPropertyDescriptors

    這個方法主要的作用是返回屬性的描述對象(descriptor)

    // name 和age 雖然沒有使用屬性描述符來定義,但是他們也具備對應的特性的 // value: 賦值的 value // configurable: true // enumerable:true // writable:true var obj = {name: "why",age: 18 } // 數據屬性描述符 // 用了屬性描述符,value 默認是 undefined,其他默認是 false Object.defineProperty(obj, "address", {value: "北京市",// configurable:false 表示 這個屬性不可刪除/不可以重新定義屬性描述符configurable: false,// enumerable 配置 該屬性是否是可以枚舉的,false 不可枚舉的// 用 for in 遍歷對象,會找不到 address,如果 是true 那就會找到addressenumerable: false,// writable表示 該屬性是否可以被修改,false 表示 不可以修改,true 表示可以修改writable: false, }) console.log(Object.getOwnPropertyDescriptors(obj));

    4、es9

    4.1 迭代器

    后續補充

    4.2 對象展開運算符

    總結

    以上是生活随笔為你收集整理的jses6 新特性,以及es7/8/9 或,常用特性的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    欧美韩日在线 | 日韩一区二区三区高清免费看看 | 极品久久久 | 99热精品免费观看 | 99精品乱码国产在线观看 | 久久免费视频网站 | 97在线看片| 日本深夜福利视频 | 97成人超碰| 操操操日日 | 亚洲精品午夜国产va久久成人 | 日韩免费视频播放 | 日本护士撒尿xxxx18 | 在线观看日韩中文字幕 | 国产精品久久久久av福利动漫 | 免费在线成人av | 69视频在线播放 | 欧美少妇影院 | 日批在线观看 | 人人插人人澡 | 在线播放日韩 | 在线电影 一区 | 美国人与动物xxxx | 亚洲人精品午夜 | 91视频高清 | 婷婷色中文字幕 | 91视频com | 西西44人体做爰大胆视频 | 精品国产乱码久久久久久久 | av免费在线观 | 欧美色婷婷 | 亚洲精品视频免费观看 | 久久av高清 | 日韩高清dvd| 国产精品美 | 国产一级在线观看 | 亚洲第一区精品 | www..com毛片| 国产精品一区二区三区免费看 | 日韩免费电影网 | 久久国语露脸国产精品电影 | 天天操天天操天天操天天操天天操 | 国产在线一线 | 黄色a在线 | 91大神精品视频在线观看 | 黄色视屏免费在线观看 | 国产精品女同一区二区三区久久夜 | 久久免费av电影 | 深爱激情五月网 | 久久人人爽爽人人爽人人片av | 亚洲 欧美 综合 在线 精品 | 99在线高清视频在线播放 | 7777精品伊人久久久大香线蕉 | 91黄色在线看 | 免费美女av | 久精品在线 | www日韩欧美 | 久久久久久久久久久久99 | 精品国产美女 | 亚洲午夜在线视频 | 黄色小说免费在线观看 | 黄色免费观看视频 | 日av免费| 久久激五月天综合精品 | 国产精品免费在线播放 | 久久久亚洲国产精品麻豆综合天堂 | www.久久色 | 色99久久| 天天亚洲 | 中文字幕在线观看的网站 | 欧美韩国日本在线 | 色综合久久久久久久 | 香蕉手机在线 | 国产视频精品久久 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 久久久久国产精品免费免费搜索 | 欧美日韩视频在线观看一区二区 | 久久久人人爽 | 一级性视频 | 天天爱天天射天天干天天 | 天天操综合网 | 免费福利片 | 国产精品久久久久久999 | 中文字幕日本特黄aa毛片 | 500部大龄熟乱视频 欧美日本三级 | 免费a级黄色毛片 | 在线超碰av | 欧美日本三级 | 伊人午夜| 久久久久亚洲精品成人网小说 | 国产成人av电影在线 | 狠狠干夜夜操天天爽 | 91日韩在线专区 | 免费看的黄色片 | 免费涩涩网站 | 婷婷六月天在线 | 一本一本久久aa综合精品 | 狠狠操狠狠干天天操 | 成人一级在线观看 | 亚洲高清精品在线 | 日韩精品一区二区三区高清免费 | 国产精品乱码一区二三区 | 人人爽人人| 91精品综合在线观看 | 九九热在线观看 | 国产小视频在线 | 九九九九九九精品 | 成人在线观看网址 | 正在播放一区二区 | 在线播放 日韩专区 | 日韩高清毛片 | 91麻豆福利 | 国产精品久久一卡二卡 | 99久久国产免费看 | 国产精品视频免费观看 | 国产精品久久久久久久av大片 | 色婷婷视频 | 婷婷色中文 | 91精品免费在线 | 超碰97人| 一区二区电影在线观看 | 国产99视频在线观看 | 久久免费精品视频 | 夜色资源网 | 久热爱| www黄色av | 成人av在线一区二区 | 在线视频你懂 | 欧美日韩精品免费观看 | 91天天操 | 97精品国产97久久久久久 | 九九视频在线 | 丁香av | 国产麻豆剧果冻传媒视频播放量 | 99视频| 国产精品99久久免费观看 | 五月婷视频 | 国产高清av在线播放 | 超碰人人超 | 麻花豆传媒一二三产区 | 91成年视频| 一本一道久久a久久精品蜜桃 | 狠狠干成人综合网 | 亚洲精选视频免费看 | 97视频人人免费看 | 特黄一级毛片 | 亚洲天天干 | 精品久久一区二区三区 | 日韩专区在线观看 | 欧美日韩中 | 97影视| 日韩高清一区 | 有码一区二区三区 | 久久精品波多野结衣 | 天天干天天草 | 欧美午夜激情网 | 444av| 久久精品99国产精品亚洲最刺激 | 最新日韩中文字幕 | 国产免费作爱视频 | 成年人视频在线免费 | 91色九色| 久久综合色天天久久综合图片 | 日韩欧美高清视频在线观看 | 亚洲精品小视频在线观看 | 久操视频在线 | 干 操 插 | 91九色蝌蚪视频网站 | 中文字幕精品一区 | 天天做天天爱夜夜爽 | 国产黄色片免费在线观看 | 久久99精品久久久久蜜臀 | 奇米先锋 | 国产成人久久精品一区二区三区 | 九九久久久久久久久激情 | 视频99爱 | www.午夜视频 | 日本婷婷色 | 日韩久久在线 | 91天天操 | 国产在线污 | 五月激情婷婷丁香 | 又黄又刺激又爽的视频 | 精品国产自在精品国产精野外直播 | 久久久国产精品电影 | 欧美韩国在线 | 中文字幕亚洲欧美日韩 | 国产激情久久久 | 爱爱一区| 97人人网 | 啪一啪在线 | 日日干天天射 | 色搞搞| 二区三区中文字幕 | 色婷婷狠狠操 | 国产一二三四在线视频 | 亚洲精品成人免费 | 成人国产精品电影 | 激情在线免费视频 | 中文字幕免费久久 | 成人免费一级 | 亚洲乱码国产乱码精品天美传媒 | 久久综合久久综合这里只有精品 | 成人四虎 | 狠狠色丁香婷婷综合 | 亚洲综合成人婷婷小说 | 精品久久久久久电影 | 国产九色视频在线观看 | 欧美在线你懂的 | 在线播放亚洲激情 | 337p日本大胆噜噜噜噜 | 国产精品久久久一区二区三区网站 | 日日碰狠狠添天天爽超碰97久久 | 91成人精品观看 | 国产美女免费观看 | 久久精品国产一区二区电影 | 久久在线观看视频 | 欧美一区二区三区特黄 | 国产不卡免费av | 国产视频999| 国产精美视频 | 天天干天天摸天天操 | 97超碰人人网 | 在线观看日韩中文字幕 | 欧洲精品码一区二区三区免费看 | 国产一级特黄毛片在线毛片 | 99热亚洲精品 | 国产精品成人自拍 | 尤物九九久久国产精品的分类 | 日本视频精品 | 91av官网| 免费在线成人 | 日韩av区| 亚洲精品国产综合99久久夜夜嗨 | 麻豆高清免费国产一区 | 欧美激情精品久久 | 黄色大片网 | 天天干天天做 | 日韩av一区二区三区在线观看 | 中文在线www | 国产手机av在线 | 国产一区91 | 伊人婷婷网 | 久草久草久草久草 | 免费无遮挡动漫网站 | 久久久在线视频 | 成人在线中文字幕 | 狠狠狠狠狠狠天天爱 | 97视频在线 | 日韩精品免费在线 | 亚洲欧美日韩在线一区二区 | 精品福利网| 国产成人精品一二三区 | 96香蕉视频 | 久久久久久久免费观看 | 草樱av | 丰满少妇高潮在线观看 | 日本久久久久久 | 国产精品永久免费 | 国产一级性生活 | 九九综合久久 | 国产亚洲字幕 | 亚洲天堂激情 | 日韩剧情| 91人人人| 九色视频网址 | 操久在线| 久久综合网色—综合色88 | 成人app在线免费观看 | 色插综合| 日韩视频在线不卡 | 天天爽天天摸 | 中文字幕有码在线观看 | 成人免费在线观看入口 | 色综合久久久久久中文网 | 国产麻豆精品一区 | 又黄又爽的视频在线观看网站 | 久久九九国产视频 | 日日夜夜骑| 中文字幕一区二区三区久久蜜桃 | 国产精品成人自产拍在线观看 | 国产成人高清在线 | 国产精品午夜在线观看 | 精品999久久久 | 99久久精品午夜一区二区小说 | 国产特级毛片 | 亚洲在线a| 久久综合影视 | 午夜久操| 亚洲在线观看av | 日韩欧美视频免费看 | 91人人干 | 日日爽天天操 | 国产一区二区在线观看免费 | 亚洲日本欧美在线 | 久久久久久综合 | 天天射天天干天天爽 | 日韩欧美在线一区二区 | 五月婷婷色 | 黄色avwww| 中文字幕观看在线 | 天天干天天干天天干 | 亚洲精品自在在线观看 | 99精品视频精品精品视频 | www.亚洲视频| 一区二区精品久久 | 日本在线观看一区 | 亚洲综合小说电影qvod | 在线亚州 | 久久综合给合久久狠狠色 | 日日干天天干 | 国产高h视频 | 欧美久久综合 | 国产成人精品一二三区 | 蜜臀av在线一区二区三区 | 91精品中文字幕 | 在线观看激情av | 日韩欧美精品一区 | 久久久久久久久久网站 | 91av短视频| 9ⅰ精品久久久久久久久中文字幕 | 99热精品国产一区二区在线观看 | 国产日韩欧美综合在线 | 丝袜网站在线观看 | 在线91精品 | 免费网站看v片在线a | 久久免费av电影 | 国内外成人在线 | 亚洲精品在线观看免费 | 久久综合九色综合网站 | 国产成人精品一区一区一区 | 色欧美88888久久久久久影院 | 天天干天天干天天干天天干天天干天天干 | 国产91在线 | 美洲 | 久久这里只有精品首页 | 国产看片免费 | 久久激情视频网 | 婷婷深爱五月 | 日本电影黄色 | 国产免费亚洲高清 | 国产精品美女久久久久久久网站 | 国产一级免费视频 | 欧美欧美| a午夜在线| 欧美亚洲成人xxx | 在线观看免费视频 | 欧美成人精品欧美一级乱 | 国产一区 在线播放 | 久久国产一区二区三区 | 国产日韩欧美在线观看视频 | 激情久久综合 | 天天干天天操天天射 | 射九九| 美女网站色免费 | 色多视频在线观看 | 欧美日韩二区三区 | 日韩黄色免费看 | 97在线观看免费高清完整版在线观看 | 69亚洲视频 | 亚洲精品中文字幕在线观看 | 亚洲艳情 | 又黄又爽免费视频 | 500部大龄熟乱视频使用方法 | 婷婷久久一区 | 丁香婷婷综合激情 | 欧美成人理伦片 | av不卡在线看 | 国产精品麻豆果冻传媒在线播放 | 中文字幕国产精品一区二区 | 婷婷在线网站 | 中文字幕成人网 | 国内视频在线观看 | 丁香六月国产 | 中文字幕激情 | 久草在线观看 | 色99久久| 亚洲乱亚洲乱亚洲 | www.亚洲黄| 婷婷六月丁 | 草 免费视频| 国内成人综合 | 成年性视频 | 欧美激情第十页 | 精品一区二区免费 | 91tv国产成人福利 | 亚洲最大色| 国产精品成人一区二区 | 欧美激情第八页 | 九九九视频精品 | 免费视频国产 | 国产成年人av | 久av电影 | 国产黄色精品网站 | 午夜电影久久久 | 1000部国产精品成人观看 | 免费特级黄色片 | 黄色亚洲精品 | 天天插日日插 | 91精品伦理 | 国产精品一区二区三区在线免费观看 | 国产精品久久久久av免费 | 色视频在线观看 | 亚洲精品免费播放 | 五月婷网 | 亚洲视频久久久久 | 激情五月婷婷激情 | 国产玖玖在线 | 国产精品videossex国产高清 | 深爱婷婷 | 久久久精品99| 日本女人逼 | 亚洲欧美日韩在线看 | 波多野结衣在线观看视频 | 天天做天天看 | 国产精品一区二区三区在线播放 | 久草网视频在线观看 | 中文一区在线观看 | 麻豆免费精品视频 | 日韩羞羞| 精品视频99| 人人精品 | 成人va天堂 | 美女黄濒| 在线一区二区三区 | 国产色在线视频 | 综合在线色 | 成人网页在线免费观看 | 在线亚洲激情 | 黄色成人在线 | 日本性高潮视频 | 国产最新视频在线观看 | www黄色软件 | 在线观看免费高清视频大全追剧 | 中文字幕在线视频一区二区三区 | 亚洲成人影音 | 色 免费观看 | 欧美大片大全 | 91视频成人免费 | 亚洲国产视频直播 | 成年人免费看的视频 | 精品一区二区精品 | 免费精品国产va自在自线 | 成人av电影免费在线观看 | 亚洲dvd | 欧美视频在线观看免费网址 | 黄视频网站大全 | 精品国产aⅴ麻豆 | h动漫中文字幕 | 高清不卡一区二区三区 | 波多野结衣在线观看视频 | 国产成人久久av977小说 | 黄色片免费在线 | 狠狠操91| 天天天色 | 国产高清一 | 天天色天天爱天天射综合 | 成人一区在线观看 | 欧美日韩亚洲第一 | 一级做a视频 | 美女网站视频色 | 成年人国产在线观看 | 色综合久久久久综合 | 成人资源在线 | 夜夜摸夜夜爽 | 欧美成人一二区 | 超级碰碰碰碰 | 黄网站大全 | 天天爱天天干天天爽 | 久久国产视频网站 | 亚洲国内精品在线 | 亚洲精品ww | 一区二区三区高清在线观看 | 久久夜夜夜 | 日日操网 | 婷婷国产一区二区三区 | 精品亚洲欧美无人区乱码 | 91黄色免费网站 | 亚洲精品麻豆 | 草久热 | 91最新在线观看 | 国产中文在线字幕 | 久久久久国产精品www | 在线播放亚洲激情 | 久草免费福利在线观看 | 91av中文字幕 | 99视频精品免费视频 | 在线视频在线观看 | 视频二区在线 | 亚洲精品中文在线 | 一本一本久久aa综合精品 | av中文字幕免费在线观看 | 成人cosplay福利网站 | 99久久久久久国产精品 | 亚洲h视频在线 | 美女视频一区二区 | 在线播放第一页 | 久操中文字幕在线观看 | 国产拍揄自揄精品视频麻豆 | 色婷婷激情电影 | 超碰在97 | 国产福利一区二区三区在线观看 | 一区二区三区日韩视频在线观看 | 久久综合色影院 | 久久免费看视频 | 在线看毛片网站 | 欧美日韩性视频 | 国产日韩欧美精品在线观看 | 91网站观看 | 日韩在线观看网站 | 欧美日韩精品区 | 亚洲精品国产欧美在线观看 | 亚洲综合一区二区精品导航 | 国产视频精选在线 | 四虎成人免费观看 | 欧美一区二区三区激情视频 | 日韩在线观看不卡 | 中文av在线天堂 | 午夜三级毛片 | 黄色毛片在线看 | 免费在线国产精品 | 日韩视频中文字幕 | 日韩大片免费观看 | 不卡日韩av| 久久久国产精华液 | 日本高清dvd| 欧美精品国产精品 | 天天色天天综合网 | 91久久久久久久一区二区 | 成年人视频在线免费播放 | 国产福利91精品 | 中文字幕一区二区在线播放 | 亚洲成a人片77777潘金莲 | av在线网站大全 | 免费观看一区 | 日韩精品中文字幕在线播放 | 亚洲午夜av | 青青色影院 | 免费av小说 | 国产日韩欧美中文 | 亚洲欧美日韩一二三区 | 国产午夜三级一区二区三 | a午夜在线 | 精品久久久久久亚洲综合网站 | 激情综合电影网 | 最新真实国产在线视频 | 久草国产在线 | 在线免费视频 你懂得 | 国产伦理一区 | a视频免费看 | 又黄又爽的视频在线观看网站 | 五月婷婷激情网 | 天天躁天天狠天天透 | 国产九九九视频 | 碰碰影院 | 99国产一区 | 国产精品1区2区3区 久久免费视频7 | 狠狠综合久久av | 国产资源 | 久久99久久99精品免视看婷婷 | 色偷偷网站视频 | 99婷婷| 国产精品一区二区久久久 | 中文字幕一区在线观看视频 | 欧美精品久久久久久久免费 | 午夜丁香视频在线观看 | 久久理论电影网 | 99精品国产在热久久 | 久久久免费毛片 | 日本护士三级少妇三级999 | 国产亚洲情侣一区二区无 | 97精品免费视频 | 免费男女网站 | 亚洲美女视频在线观看 | 天天插天天狠 | 国产女人免费看a级丨片 | 久草香蕉在线 | 91 在线视频 | 中文字幕免费成人 | 亚洲精品久久久久中文字幕二区 | 久久国产色 | 丁香婷婷射 | 激情在线网 | 美女网站色在线观看 | 91桃色在线免费观看 | 久久9999久久 | 在线国产能看的 | 久久天天躁狠狠躁夜夜不卡公司 | 久久66热这里只有精品 | 日韩av一区二区在线 | 在线99视频 | 在线日韩精品视频 | 中文字幕黄色网址 | 久久精品亚洲精品国产欧美 | 国产一区二区三区久久久 | 国产麻豆果冻传媒在线观看 | 91亚洲永久精品 | 色网免费观看 | 久久精品网站免费观看 | 波多野结衣在线视频一区 | 日韩在线精品一区 | 黄色免费大全 | 人人天天夜夜 | 国产va精品免费观看 | 9ⅰ精品久久久久久久久中文字幕 | 99成人免费视频 | 久久免费在线观看 | 日韩中字在线观看 | 黄色a大片 | 麻花传媒mv免费观看 | 日本中文在线观看 | 亚洲特级毛片 | 91完整版在线观看 | 中文一区在线 | 亚洲在线视频网站 | 色婷婷视频在线 | 国产麻豆精品95视频 | 超碰人人舔 | 国产婷婷色| 亚洲理论在线观看电影 | 久久精品99国产 | 日韩高清不卡在线 | 999成人| 中文字幕在线观看av | 亚洲国产日韩精品 | 日韩久久久久久久久久 | 激情五月伊人 | 欧洲精品视频一区 | 韩日精品在线 | 亚洲视频专区在线 | 国产中文字幕精品 | 91成人精品一区在线播放69 | 色诱亚洲精品久久久久久 | 91视频大全 | 香蕉手机在线 | 欧美另类老妇 | 国产香蕉久久精品综合网 | 久久成人综合视频 | 麻豆国产精品va在线观看不卡 | 亚洲国产精品激情在线观看 | 黄色影院在线观看 | 亚洲视频免费在线 | 精品在线观看一区二区 | 98涩涩国产露脸精品国产网 | 在线免费观看视频一区 | 久久久久久久久久网 | 超碰在线个人 | 成人在线免费看视频 | 五月婷婷激情综合 | 91人人澡 | 欧美伦理电影一区二区 | 伊人久久av | 99福利影院 | 久久综合九色综合网站 | 在线a视频免费观看 | 久久久久久久久久电影 | av3级在线| 911香蕉视频 | 日韩高清国产精品 | 夜夜操狠狠操 | 国产一线二线三线性视频 | 国产精品美女久久久久久免费 | 久久高清免费 | 国产高清日韩欧美 | 国产一级做a | 欧美日韩在线看 | 四虎国产永久在线精品 | 91在线观看黄 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品岛国久久久久久久久红粉 | 在线中文字幕av观看 | 色综合久久天天 | 奇米网网址 | 免费在线观看黄网站 | 天天色天天骑天天射 | 9在线观看免费高清完整 | 99 视频 高清 | 中文字幕在线中文 | 国产精品久久久久久久7电影 | 欧美亚洲一级片 | 日日夜夜精品免费观看 | 成年人在线观看视频免费 | 中文字幕亚洲欧美日韩2019 | 亚洲天堂在线观看完整版 | 91精品一 | 日韩色综合网 | 美女视频是黄的免费观看 | 国产在线精品播放 | av片子在线观看 | 一区二区中文字幕在线观看 | 视频在线观看99 | 中文字幕五区 | 免费网站黄 | 97在线免费观看 | 久久99电影 | 97国产一区二区 | 欧美一区二区三区激情视频 | 天天操夜夜操国产精品 | 国产精品日韩精品 | 黄色一级在线免费观看 | 91福利国产在线观看 | 久久色网站 | 亚洲综合黄色 | 亚洲国产日韩av | 日韩欧美视频在线播放 | 久久国产精品二国产精品中国洋人 | 99久久婷婷国产综合亚洲 | 免费观看成人av | 国产精品你懂的在线观看 | 久久不卡电影 | 狠狠狠干狠狠 | 一区二区 久久 | 中文资源在线观看 | 国产精品a级 | 中文字幕 国产视频 | 国产精品成人一区二区三区 | 国产无套精品久久久久久 | 黄色的视频网站 | 久久国产精品免费一区二区三区 | 日韩免费不卡视频 | 亚洲伊人av | 超碰人人av | 超碰激情在线 | 日韩a欧美 | 中文字幕在线有码 | 婷婷网址 | 欧美一级电影免费观看 | 中文av字幕在线观看 | 丁香婷婷在线观看 | 99在线观看精品 | 精品国产激情 | 精品在线观 | 欧美性猛片, | 亚洲精品视频免费在线 | 91污在线观看 | 一区二区欧美在线观看 | 国产高清精品在线观看 | 91精品久久久久久综合乱菊 | 在线中文字幕一区二区 | 久久免费视频国产 | 日韩国产欧美在线视频 | 开心色插| 96超碰在线| 免费在线观看毛片网站 | 国产一级精品视频 | 91社区国产高清 | 顶级bbw搡bbbb搡bbbb | 国产成人精品一区二区三区福利 | 97理论片| 国产精品门事件 | 成人黄色小说在线观看 | 国产精品久久久免费看 | 波多野结衣一区三区 | 亚洲精品字幕在线观看 | 亚洲精品tv久久久久久久久久 | 国内精品久久久久久久97牛牛 | 一区二区电影网 | 中文字幕在线观看av | 欧美日韩国产精品一区二区 | 又黄又爽的视频在线观看网站 | 中文在线a天堂 | 亚洲视频电影在线 | 久久婷婷色 | 日韩av成人在线观看 | 中文免费在线观看 | 97超碰人人澡人人爱学生 | 毛片网站在线观看 | 欧美亚洲精品在线观看 | 国产一级黄色免费看 | 在线观看视频日韩 | 久久免费视频在线观看 | 91av综合 | 久久精品国产一区二区三区 | 亚洲精品电影在线 | 欧美日韩在线观看一区二区三区 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 天天干夜夜想 | 欧洲精品在线视频 | 激情欧美在线观看 | 久久免费国产电影 | 亚洲在线a | 天天天插| 正在播放国产一区二区 | 国内视频在线观看 | 色国产视频 | 911香蕉| 日本爱爱免费 | 91视频麻豆视频 | 日韩欧美视频在线免费观看 | 色综合天天射 | 香蕉久草 | 国产精品21区 | 日本aaa在线观看 | 久久精品老司机 | 友田真希x88av| 日韩一区正在播放 | 婷婷日日 | 曰本三级在线 | 伊色综合久久之综合久久 | 久热免费| 99精品在线免费观看 | 日韩久久一区 | 欧美精品乱码久久久久久按摩 | 福利在线看片 | 国产精品精品久久久久久 | 黄色美女免费网站 | 午夜色大片在线观看 | 成人av网页 | 国产免费激情久久 | 中文字幕色在线视频 | 色久网| 亚洲aⅴ在线观看 | 亚洲天天综合网 | 在线成人欧美 | 五月婷婷视频 | 国产高清不卡在线 | 日本资源中文字幕在线 | 视频在线播放国产 | 日韩中文三级 | 亚洲涩涩网 | 国产精品日韩久久久久 | 91av美女| 91成人精品一区在线播放69 | 91免费观看视频网站 | 91高清视频 | 97超碰香蕉 | 西西www4444大胆在线 | 午夜久久久精品 | 久久免费视频精品 | 91九色视频观看 | 国产精品久久嫩一区二区免费 | 色网av| 久久视频免费 | 中文字幕在线观看视频网站 | 精品国产一区二区三区四 | 97精品一区二区三区 | 99视频在线免费观看 | 一级一片免费看 | 97在线观看免费观看高清 | 免费看国产视频 | 欧美日韩在线视频观看 | 欧美性黑人 | 一 级 黄 色 片免费看的 | 天天色天天爱天天射综合 | 激情五月***国产精品 | 精品国产一区二区三区日日嗨 | 超级av在线 | 免费热情视频 | 天天干天天操天天 | 国产第一页在线播放 | 久久99精品久久久久久清纯直播 | 国产一级片在线播放 | 99在线热播 | 久草精品视频 | 国产免费小视频 | 99亚洲国产精品 | 日韩激情综合 | 亚洲劲爆av | 国产精品手机在线播放 | 91大神dom调教在线观看 | 亚洲激精日韩激精欧美精品 | 热久久精品在线 | 国产视频资源 | 96av视频| 制服丝袜在线 | 亚洲日本va午夜在线电影 | 成人高清在线观看 | 黄色免费大全 | av在线直接看 | 97在线视频免费看 | 手机在线看a | 欧美美女激情18p | 不卡视频在线看 | 欧美精品网站 | 久久久电影网站 | 中文字幕日本在线观看 | 免费高清看电视网站 | 区一区二区三在线观看 | 日韩欧美国产激情在线播放 | 69精品人人人人 | 国产精品久久久久三级 | 久久久国产精品电影 | 欧美黄色软件 | 中文字幕免费高清av | 欧美日韩不卡在线 | 亚洲一级二级 | 国产精品久久久777 成人手机在线视频 | 国产五月色婷婷六月丁香视频 | 国产成人三级在线观看 | 日韩高清三区 | 国产精品久久久久久久久久久免费 | 日本99干网 | 91大神精品视频在线观看 | 在线视频日韩精品 | 黄色www | 久久好看 | 超碰在线97观看 | 国产精品久久久777 成人手机在线视频 | 九九热视频在线 | 中文字幕 欧美性 | 国产成人1区 | 欧美精品中文在线免费观看 | 天天爽天天做 | 亚洲综合色丁香婷婷六月图片 | 黄色aa久久 | 国产成人免费网站 | 日本黄色免费播放 | 五月婷婷开心中文字幕 | 狠狠的操 | 天天爽夜夜爽精品视频婷婷 | 黄色软件视频大全免费下载 | 国产偷国产偷亚洲清高 | 国产欧美综合视频 | 婷婷开心久久网 | 人人看人人草 | 天天摸天天干天天操天天射 | 六月丁香婷| 国产精品亚洲精品 | 99热国内精品 | 欧美一级免费 | 五月天久久精品 | 国产中文视 | 日韩久久久久久久 | 97碰碰碰 | 久久精品国产99国产 | 91精品一区二区三区蜜桃 | 天天综合操 | 国内精品视频久久 | 久久久国产在线视频 | 日本免费久久高清视频 | 天天操婷婷 | 一个色综合网站 | 欧美激情第28页 | 狠狠操影视| 天天草网站 | 成人黄色电影视频 | 午夜免费视频网站 | 天天操天天射天天操 | 国产视频在线免费 | 精品欧美一区二区精品久久 | av片免费播放 | 草久热| 免费一级片观看 | 国产在线精品一区二区三区 | 国产男女爽爽爽免费视频 | 欧美色精品天天在线观看视频 | 日韩精品在线免费观看 | 久久99免费| 欧美日韩高清不卡 | 欧美另类z0zx | 国产剧情在线一区 | 国产91精品一区二区 | 国产精品2019 | 韩国视频一区二区三区 | 色婷婷激情 | 久久精品99国产精品日本 | 4p变态网欧美系列 | 一区二区中文字幕在线播放 | 日韩在线免费播放 | 国产精品99久久免费黑人 | 国产小视频网站 | 超碰人在线| 国产v在线观看 | 国产精品专区h在线观看 | 中文字幕 二区 | 欧日韩在线视频 | 91网免费看 | www.亚洲精品视频 | 免费亚洲精品视频 | 国产精品久久久久久影院 | 成人一区二区三区在线 | 久久免费国产视频 | 午夜久久网站 | 五月婷婷另类国产 | 久久免费视频在线观看30 | 色999五月色| 国产日韩欧美精品在线观看 | 麻豆影视网站 | 日韩免费成人 | 日韩中文字幕在线看 | 91大神在线看 | 久热色超碰 | 亚洲精品美女在线观看播放 | 日韩大片免费在线观看 | 香蕉视频久久久 | 伊人亚洲综合网 | 久草在线综合 | 欧美日韩精品电影 | 亚洲成av人影院 | 在线观看视频日韩 | 四虎影院在线观看av | 国产高清专区 | 色综合网 | 国产免费一区二区三区网站免费 | 久草在线观看 | 成年人免费在线观看网站 | 国产在线更新 | 国产91综合一区在线观看 | 久久国产成人午夜av影院宅 |