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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

前端知识点总结——JS高级(持续更新中)

發(fā)布時(shí)間:2025/3/8 HTML 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端知识点总结——JS高级(持续更新中) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前端知識(shí)點(diǎn)總結(jié)——JS高級(jí)(持續(xù)更新中)

1.字符串

什么是: 連續(xù)存儲(chǔ)多個(gè)字符的字符數(shù)組
相同: 1. 下標(biāo) 2. .length 3. 遍歷

4. 選取: slice(starti[, endi])

不同: 類(lèi)型不同 API不通用
API: 所有字符串API都無(wú)權(quán)修改原字符串,總是返回新字符串

  • 大小寫(xiě)轉(zhuǎn)換:
    統(tǒng)一轉(zhuǎn)大寫(xiě): str=str.toUpperCase()
    統(tǒng)一轉(zhuǎn)小寫(xiě): str=str.toLowerCase()
    何時(shí): 不區(qū)分大小寫(xiě)時(shí),都需要先轉(zhuǎn)為一致的大小寫(xiě),再比較。
  • 說(shuō)明: 驗(yàn)證碼本不該客戶(hù)端做,應(yīng)該由服務(wù)器端完成

    2.獲取指定位置的字符:

    str.charAt(i) => str[i]
    獲取指定位置字符的unicode號(hào)
    str.charCodeAt(i)

    將unicode號(hào)轉(zhuǎn)為漢字: String.fromCharCode(unicode)

    3.獲取子字符串:

    str.slice(starti,endi+1)
    強(qiáng)調(diào): 如果一個(gè)API,兩個(gè)參數(shù)都是下標(biāo),則后一個(gè)參數(shù)+1(含頭不含尾)
    str.substring(starti,endi+1) 用法和slice完全一樣
    強(qiáng)調(diào): 不支持負(fù)數(shù)參數(shù)
    str.subStr(starti,n) 從starti開(kāi)始,取n個(gè)
    強(qiáng)調(diào): 第二個(gè)參數(shù)不是下標(biāo),所以,不用考慮含頭不含尾

    4.查找: 4種:

  • 查找一個(gè)固定的關(guān)鍵詞出現(xiàn)的位置:
    var i=str.indexOf("關(guān)鍵詞"[,fromi])
    在str中,fromi位置后,找下一個(gè)"關(guān)鍵詞"出現(xiàn)的位置
    如果找到,返回關(guān)鍵詞第一個(gè)字的下標(biāo)位置
    如果沒(méi)找到,返回-1
    說(shuō)明: fromi可省略,默認(rèn)從0開(kāi)始

    var i=str.lastIndexOf("關(guān)鍵詞");
    在str中,查找"關(guān)鍵詞"最后出現(xiàn)的位置

    問(wèn)題: 只能查找一個(gè)固定的關(guān)鍵詞
    臥我草/操/艸/槽
    微 信 w x wei xin
    解決: 用正則查找:

  • 判斷是否包含關(guān)鍵詞:
    var i=str.search(/正則/)
    返回值: 如果找到,返回關(guān)鍵詞的位置

    如果沒(méi)找到,返回-1

    問(wèn)題: 默認(rèn),所有正則都區(qū)分大小寫(xiě)
    解決: 在第二個(gè)/后加i ignore 忽略
    問(wèn)題: 只能獲得位置,無(wú)法獲得本次找到的敏感詞的內(nèi)容

  • 獲得關(guān)鍵詞的內(nèi)容:
    var arr=str.match(/正則/i);
    2種情況:

  • 不加g的情況: 只能返回第一個(gè)找到的關(guān)鍵詞內(nèi)容和位置: [ 0: "關(guān)鍵詞內(nèi)容", index: 位置 ]
  • 加g: 返回所有找到的敏感詞的內(nèi)容,保存在數(shù)組中。g: global
  • 強(qiáng)調(diào): 如果找不到,返回null

    警告: 凡是一個(gè)函數(shù)可能返回null!都要先判斷不是null,才能用!

    問(wèn)題: 只能獲得關(guān)鍵詞內(nèi)容,無(wú)法獲得位置

  • 即找每個(gè)關(guān)鍵詞內(nèi)容,又找每個(gè)關(guān)鍵詞位置:
    reg.exec()
  • 5.替換:

    什么是: 將找到的關(guān)鍵詞替換為指定的內(nèi)容
    如何: 2種:

  • 簡(jiǎn)單替換: 將所有敏感詞無(wú)差別的替換為統(tǒng)一的新值
    str=str.replace(/正則/,"替換值")
  • 高級(jí)替換: 根據(jù)每個(gè)敏感詞的不同,分別替換不同的值
    str=str.replace(/正則/,function(kw){

    //kw: 會(huì)自動(dòng)獲得本次找到的一個(gè)關(guān)鍵詞return 根據(jù)kw的不同,動(dòng)態(tài)生成不同的替換值

    })

  • 衍生: 刪除關(guān)鍵詞:
    str=str.replace(/正則/,"")

    6.正則表達(dá)式: Regular Expression

    什么是: 描述一個(gè)字符串中字符出現(xiàn)規(guī)律的規(guī)則的表達(dá)式
    何時(shí): 2種:

  • 查找關(guān)鍵詞:
  • 驗(yàn)證:
  • 如何: 正則表達(dá)式語(yǔ)法:

  • 最簡(jiǎn)單的正則其實(shí)是關(guān)鍵詞原文:
  • 7.字符集:

    什么是: 規(guī)定一位字符,備選字符列表的集合
    何時(shí): 只要一位字符,有多種備選字時(shí)
    如何: [備選字符列表]
    強(qiáng)調(diào): 一個(gè)[]只能匹配一位字符
    簡(jiǎn)寫(xiě): 如果備選字符列表中部分字符連續(xù)

    可簡(jiǎn)寫(xiě)為: [x-x] 用-省略中間字符比如: [0-9] 一位數(shù)字[a-z] 一位小寫(xiě)字符[A-Z] 一位大寫(xiě)字母[A-Za-z] 一位字符[0-9A-Za-z] 一位字母或數(shù)字[\u4e00-\u9fa5] 一位漢字

    反選: 1 除了4和7都行

    8.預(yù)定義字符集: 4種:

    d 一位數(shù)字 [0-9]
    w 一位數(shù)字,字母或下劃線(xiàn) [0-9A-Za-z_]
    強(qiáng)調(diào): 只有100%匹配時(shí),才使用w,如果不允許有_,則使用自定義字符集
    s 一位空字符,比如: 空格,Tab,...
    . 通配符
    問(wèn)題: 字符集只能規(guī)定字符的內(nèi)容,無(wú)法靈活規(guī)定字符的個(gè)數(shù)

    9.量詞:

    什么是: 專(zhuān)門(mén)規(guī)定一個(gè)字符集出現(xiàn)次數(shù)的規(guī)則
    何時(shí): 只要規(guī)定字符集出現(xiàn)的次數(shù),都用量詞
    如何: 字符集量詞
    強(qiáng)調(diào): 量詞默認(rèn)只修飾相鄰的前一個(gè)字符集
    包括: 2大類(lèi):

    1. 有明確數(shù)量邊界:{6,8} 最少6次,最多8次{6,} 最少6次,多了不限{6} 必須6次,不能多也不能少 2. 沒(méi)有明確數(shù)量邊界:? 可有可無(wú),最多1次* 可有可無(wú),多了不限+ 至少1次,多了不限

    10.選擇和分組:

  • 選擇: 或
    規(guī)則1|規(guī)則2
    何時(shí): 只要在兩個(gè)規(guī)則中任選其一匹配
  • 分組: (規(guī)則1規(guī)則2...)
    何時(shí): 如果希望一個(gè)量詞同時(shí)修飾多個(gè)規(guī)則時(shí),都要先將多個(gè)規(guī)則分為一組,再用量詞修飾分組。

    比如: 車(chē)牌號(hào): [\u4e00-\u9fa5][A-Z]?[0-9A-Z]{5} 比如: 手機(jī)號(hào)規(guī)則: \+86或0086 可有可無(wú),最多1次 空字符 可有可無(wú),多了不限1在3,4,5,7,8中選一個(gè)

    9位數(shù)字
    (+86|0086)?s*1[34578]d{9}

    比如: 身份證號(hào):

    15位數(shù)字 2位數(shù)字 一位數(shù)字或X

    可有可無(wú),最多一次 \d{15}(\d{2}[0-9X])? 比如: 電子郵件: 鄙視

    /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
    比如: url:
    (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

  • 11.匹配特殊位置: 3個(gè):

  • 字符串開(kāi)頭: ^
  • 字符串結(jié)尾: $
    比如: 開(kāi)頭的空字符: ^s+

    結(jié)尾的空字符: \s+$開(kāi)頭或結(jié)尾的空字符: ^\s+|\s+$

    3.單詞邊界: b 包括開(kāi)頭,結(jié)尾,空字符,標(biāo)點(diǎn)符號(hào)

    比如: 單詞首字母: \b[a-z] 匹配單詞: \bxxx\b
  • 12.String:

    替換: 2種: 如果關(guān)鍵詞是固定的:
    str=str.replace("關(guān)鍵詞","替換值");
    如果關(guān)鍵詞變化
    str=str.replace(/正則/ig,"替換值");
    切割: 2種: 如果分隔符是固定的:
    var substrs=str.split("分隔符")
    如果分隔符不是固定的
    var substrs=str.split(/正則/i)
    固定套路: 將字符串打散為字符數(shù)組

    var chars=str.split("")

    13.RegExp:

    什么是: 保存一條正則表達(dá)式,并提供用正則表達(dá)式執(zhí)行驗(yàn)證和查找的API
    何時(shí): 只要用正則查找關(guān)鍵詞或驗(yàn)證字符串格式時(shí)
    如何:
    創(chuàng)建: 2種:

  • 直接量: var reg=/正則/ig
    何時(shí): 只要正則表達(dá)式的規(guī)則是固定不變的。
    問(wèn)題: 正則表達(dá)式時(shí)固定不變的,不支持動(dòng)態(tài)生成
  • new: var reg=new RegExp("正則","ig");
    何時(shí): 只要需要?jiǎng)討B(tài)生成正則表達(dá)式
  • API: 2個(gè):

  • 驗(yàn)證: var bool=reg.test(str)
    問(wèn)題: 默認(rèn),只要找到匹配的內(nèi)容,就返回true,不要求完整匹配!
    解決: 今后,凡是驗(yàn)證必須前加^,后加$
  • 查找: 即找每個(gè)關(guān)鍵詞位置,又獲得每個(gè)關(guān)鍵詞內(nèi)容
    var arr=reg.exec(str)
    在str中查找下一個(gè)關(guān)鍵詞的位置和內(nèi)容
    返回值: arr:[ 0: 內(nèi)容, index: 位置 ]
    如果找不到,返回null
    如果找所有: 只要用while反復(fù)調(diào)用reg.exec即可,exec可自動(dòng)跳到下一個(gè)查找位置
  • 14.Math

    什么是: 保存數(shù)學(xué)計(jì)算的常量和API的對(duì)象
    何時(shí): 進(jìn)行算術(shù)計(jì)算
    如何:
    創(chuàng)建: 不用創(chuàng)建,所有API都用Math直接調(diào)用
    API:

  • 取整:
    上取整: Math.ceil(num)
    下取整:
    Math.floor(num)
    parseInt(str) 去掉字符串結(jié)尾非數(shù)字字符(單位)
    四舍五入取整:
    Math.round(num)
    優(yōu): 返回?cái)?shù)字類(lèi)型,可直接計(jì)算
    缺: 不能隨意指定小數(shù)位數(shù)
    n.toFixed(d)
    優(yōu): 可隨意指定小數(shù)位數(shù)
    缺: 返回字符串類(lèi)型,不能直接做加法
    自定義round
  • 乘方和開(kāi)平方:
    Math.pow(底數(shù),冪)
    Math.sqrt(num)
  • 最大值和最小值
    Math.max(值1, 值2,...)
    Math.min(值1, 值2,...)
    問(wèn)題: 不支持?jǐn)?shù)組
    解決: Math.max(...arr)
  • 隨機(jī)數(shù):
    Math.random() 0~1 隨機(jī)小數(shù)
    公式: 在min到max之間取一個(gè)隨機(jī)整數(shù)
    parseInt(Math.random()*(max-min+1)+min)
    簡(jiǎn)寫(xiě): 在0~max之間取一個(gè)隨機(jī)整數(shù)
    parseInt(Math.random()*(max+1))
  • 三角函數(shù):
    已知角度,求邊長(zhǎng),用三角函數(shù): sin cos tan
    已知邊長(zhǎng),求角度,用反三角函數(shù): asin acos atan
    僅以atan:
    var 弧度=Math.atan(對(duì)邊長(zhǎng)/鄰邊長(zhǎng))

    360角度=2π弧度

    問(wèn)題: atan無(wú)法區(qū)分角度的象限
    解決: Math.atan2(對(duì)邊長(zhǎng), 鄰邊長(zhǎng));

  • 15.Date:

    什么是: 保存一個(gè)時(shí)間,提供操作時(shí)間的API
    何時(shí): 只要在程序中存儲(chǔ)時(shí)間或操作時(shí)間,都用date
    如何:
    創(chuàng)建: 4種:

  • 創(chuàng)建日期對(duì)象,并自動(dòng)獲得客戶(hù)端當(dāng)前系統(tǒng)時(shí)間
    var now=new Date();
  • 創(chuàng)建日期對(duì)象,保存自定義時(shí)間
    var now=new Date("yyyy/MM/dd hh:mm:ss");
  • 用毫秒數(shù)創(chuàng)建日期對(duì)象:
    var date=new Date(ms)
  • 復(fù)制一個(gè)日期對(duì)象:
    問(wèn)題: 日期的計(jì)算都是直接修改原日期對(duì)象
    解決: 如果希望同時(shí)保留計(jì)算前后的開(kāi)始和結(jié)束時(shí)間,都要先復(fù)制開(kāi)始時(shí)間,再用副本計(jì)算結(jié)束時(shí)間
    var date2=new Date(date1)
  • 本質(zhì): 起始日期對(duì)象內(nèi)部保存的是一個(gè)巨大的毫秒數(shù):

    1970年1月1日至今的毫秒數(shù)

    文字存儲(chǔ)日期的問(wèn)題:

    1. 有時(shí)區(qū)問(wèn)題: 2. 不便于計(jì)算:

    毫秒數(shù)存儲(chǔ)日期:

    1. 不受時(shí)區(qū)的干擾: 2. 便于計(jì)算:

    總結(jié): 將來(lái)在網(wǎng)絡(luò)中傳輸或在數(shù)據(jù)庫(kù)中存儲(chǔ)時(shí)間,都用毫秒數(shù)

    16.API:

  • 8個(gè)單位:
    FullYear Month Date Day
    Hours Minutes Seconds Milliseconds
  • 每個(gè)單位上都有一對(duì)兒get/set方法:
    getXXX() 負(fù)責(zé)獲得單位的值
    setXXX() 負(fù)責(zé)修改單位的值
    特例: Day 不能修改,沒(méi)有setDay()
  • 取值范圍:
    Month: 0~11 計(jì)算機(jī)中的月份總是比現(xiàn)實(shí)中小1
    Date: 1~31
    Day: 0~6
    Hours: 0~23
    Minutes/Seconds: 0~59
  • 日期計(jì)算:

  • 兩日期相減: 得到的是毫秒差
    何時(shí): 計(jì)算時(shí)間段或計(jì)算倒計(jì)時(shí)
  • 對(duì)任意單位做加減: 3步:

  • 獲得單位的當(dāng)前值
  • 做加減
  • 將計(jì)算后的結(jié)果set回去
    setXXX()可自動(dòng)調(diào)整時(shí)間進(jìn)制
  • 可簡(jiǎn)化為: date.setXXX(date.getXXX()+n)
    問(wèn)題: setXXX()直接修改原日期
    解決: 如果同時(shí)保存計(jì)算前后的開(kāi)始和結(jié)束時(shí)間,應(yīng)該先復(fù)制副本,再用副本計(jì)算。

    17.Date:

    日期格式化:
    date.toString() 默認(rèn)當(dāng)?shù)貢r(shí)間的完整版格式
    date.toLocaleString() 轉(zhuǎn)為當(dāng)?shù)貢r(shí)間的簡(jiǎn)化版格式
    date.toLocaleDateString() 僅保留日期部分
    date.toLocaleTimeString() 僅保留時(shí)間部分

    18.Error:

    什么是錯(cuò)誤: 程序執(zhí)行過(guò)程中,遇到的無(wú)法繼續(xù)執(zhí)行的異常情況
    程序出錯(cuò),都會(huì)強(qiáng)行中斷退出。
    什么是錯(cuò)誤處理: 即使程序出錯(cuò)!也保證不會(huì)中斷退出
    何時(shí): 如果希望程序,即使出錯(cuò),也不會(huì)強(qiáng)行中斷退出
    如何:
    try{
    可能出錯(cuò)的正常代碼
    }catch(err){
    //err: 錯(cuò)誤對(duì)象, 自動(dòng)保存了錯(cuò)誤的信息
    只有出錯(cuò)才執(zhí)行的錯(cuò)誤處理代碼:
    提示錯(cuò)誤信息, 記錄日志, 釋放資源
    }
    問(wèn)題: 效率略低
    解決: 多數(shù)try catch,都能用if...else代替

    主動(dòng)拋出錯(cuò)誤:
    throw new Error("錯(cuò)誤信息")
    鄙視: js中共有幾種錯(cuò)誤類(lèi)型: 6種:
    SyntaxError 語(yǔ)法錯(cuò)誤
    ReferenceError 引用錯(cuò)誤
    TypeError 類(lèi)型錯(cuò)誤
    RangeError 范圍錯(cuò)誤 參數(shù)超范圍

    EvalError URIError

    19.Function:

    什么是函數(shù): 保存一段代碼段的對(duì)象,再起一個(gè)名字。
    為什么: 代碼重用
    何時(shí): 只要一段代碼可能被重復(fù)使用時(shí)!
    如何:
    創(chuàng)建: 3種:

  • 聲明: function 函數(shù)名(參數(shù)列表){

    函數(shù)體;return 返回值;}

    參數(shù): 調(diào)用函數(shù)時(shí),接收傳入函數(shù)的數(shù)據(jù)的變量
    何時(shí): 如果函數(shù)自身必須某些數(shù)據(jù)才能正常執(zhí)行時(shí),就必須定義參數(shù),從外部接收必須的數(shù)據(jù)
    返回值: 函數(shù)的執(zhí)行結(jié)果
    何時(shí): 如果調(diào)用者需要獲得函數(shù)的執(zhí)行結(jié)果時(shí)
    調(diào)用: var 返回值=函數(shù)名(參數(shù)值列表);
    問(wèn)題: 聲明提前: 在程序開(kāi)始執(zhí)行前,先將var聲明的變量和function聲明的函數(shù),提前到當(dāng)前作用域的頂部集中創(chuàng)建。賦值留在原地。
    解決:

  • 直接量: var 函數(shù)名=function (參數(shù)列表){
    特點(diǎn): 不會(huì)被聲明提前
    揭示: 函數(shù)名其實(shí)只是一個(gè)變量

    函數(shù)其實(shí)是一個(gè)保存代碼段的對(duì)象函數(shù)名通過(guò)對(duì)象地址引用函數(shù)對(duì)象
  • new :
    var 函數(shù)名=
    new Function("參數(shù)1","參數(shù)2",...,"函數(shù)體")
  • 20.重載overload:

    什么是: 多個(gè)相同函數(shù)名,不同參數(shù)列表的函數(shù),在調(diào)用時(shí),可根據(jù)傳入的參數(shù)不同,自動(dòng)執(zhí)行不同的操作。
    為什么: 為了減少API的數(shù)量,減輕調(diào)用者的負(fù)擔(dān)
    何時(shí): 只要一項(xiàng)任務(wù),可能根據(jù)傳入?yún)?shù)的不同,執(zhí)行不同的流程時(shí)。
    如何: js語(yǔ)法默認(rèn)不支持重載!

    因?yàn)? js中不允許多個(gè)同名函數(shù),同時(shí)存在。最后一個(gè)函數(shù)會(huì)覆蓋之前的。 變通實(shí)現(xiàn): arguments什么是: 每個(gè)函數(shù)中,自動(dòng)包含的,接收所有傳入函數(shù)的參數(shù)值的類(lèi)數(shù)組對(duì)象類(lèi)數(shù)組對(duì)象: 長(zhǎng)得像數(shù)組的對(duì)象vs 數(shù)組: 相同: 1. 下標(biāo), 2. .length, 3. 遍歷不同: 類(lèi)型不同, API不通用

    21.匿名函數(shù):

    什么是: 定義函數(shù)時(shí),不指定函數(shù)名
    為什么: 節(jié)約內(nèi)存 或 劃分臨時(shí)作用域
    何時(shí):

  • 只要一個(gè)函數(shù),希望調(diào)用后,立刻自動(dòng)釋放!
  • 劃分臨時(shí)作用域:
  • 如何:

  • 回調(diào): 定義函數(shù)后,自己不調(diào)用,而是傳遞給另一個(gè)函數(shù)去調(diào)用
  • 自調(diào): 定義函數(shù)后,立刻調(diào)用自己。
    何時(shí): 今后所有js代碼必須都放在匿名函數(shù)自調(diào)中,避免全局污染。
  • 22.垃圾回收:

    什么是垃圾: 一個(gè)不再被任何變量使用的對(duì)象
    什么是垃圾回收: js引擎會(huì)自動(dòng)回收不再被使用的對(duì)象的空間。
    為什么: 內(nèi)存空間都是有限的!
    垃圾回收器: 專(zhuān)門(mén)負(fù)責(zé)回收垃圾對(duì)象的小程序——js引擎自帶
    如何:

  • 程序執(zhí)行時(shí),垃圾回收器伴隨主程序執(zhí)行而執(zhí)行。
  • 每創(chuàng)建一個(gè)對(duì)象,垃圾回收器就會(huì)記錄對(duì)象被幾個(gè)變量引用著.
  • 如果發(fā)現(xiàn)一個(gè)對(duì)象不再被任何變量應(yīng)用,則自動(dòng)回收該對(duì)象的存儲(chǔ)空間。
  • 好的習(xí)慣: 只要一個(gè)對(duì)象不再使用,就要賦值為null

    23.作用域和作用域鏈

    作用域(scope): 一個(gè)變量的可用范圍
    為什么: 避免內(nèi)部的變量影響外部
    本質(zhì): 是一個(gè)存儲(chǔ)變量的對(duì)象
    包括: 2種:

  • 全局作用域: window
    保存全局變量: 隨處可用,可反復(fù)使用
  • 函數(shù)作用域: ?
    保存局部變量: 僅在函數(shù)內(nèi)可用,且不可重用!
  • 24.函數(shù)生命周期:

  • 程序開(kāi)始執(zhí)行前
    在內(nèi)存中創(chuàng)建執(zhí)行環(huán)境棧(數(shù)組): 用于保存正在調(diào)用的函數(shù)任務(wù)。
    在執(zhí)行環(huán)境站中添加第一條記錄: 調(diào)用瀏覽器主程序
    創(chuàng)建全局作用域?qū)ο體indow: 2個(gè)作用:

    1. 保存瀏覽器自己需要的數(shù)據(jù)和對(duì)象 2. 作為程序的全局作用域?qū)ο?#xff0c;保存全局變量
  • 定義函數(shù)時(shí):
    在window中定義函數(shù)名變量
    創(chuàng)建函數(shù)對(duì)象保存函數(shù)定義
    函數(shù)名變量引用函數(shù)對(duì)象
    函數(shù)對(duì)象的scope屬性,又指回了函數(shù)創(chuàng)建時(shí)的作用域
  • 調(diào)用函數(shù)時(shí)
    在執(zhí)行環(huán)境棧中添加了本次函數(shù)調(diào)用的記錄
    創(chuàng)建本次函數(shù)調(diào)用的函數(shù)作用域?qū)ο驛O
    在AO中添加函數(shù)的局部變量
    設(shè)置AO的parent指向函數(shù)的scope
    執(zhí)行環(huán)境棧中的函數(shù)調(diào)用記錄,引用AO
    變量的使用順序: 先用局部,再用全局
  • 函數(shù)調(diào)用后
    本次函數(shù)調(diào)用的記錄從執(zhí)行環(huán)境棧中出棧
    導(dǎo)致AO被釋放, 導(dǎo)致所有局部變量都釋放
  • 25.作用域鏈:

    什么是: 由多級(jí)作用域?qū)ο?#xff0c;逐級(jí)引用形成的鏈?zhǔn)浇Y(jié)構(gòu)
    2個(gè)作用:

  • 保存所有變量
  • 控制著變量的使用順序!
  • 26.閉包c(diǎn)losure:

    什么是: 即重用一個(gè)變量,又保護(hù)變量不被污染的一種機(jī)制
    為什么: 全局變量和局部變量都具有不可兼得的優(yōu)缺點(diǎn):
    全局變量: 優(yōu): 可重用, 缺: 易被污染
    局部變量: 優(yōu): 僅函數(shù)內(nèi)可用,不會(huì)被污染

    缺: 不可重用!

    何時(shí): 只要一個(gè)變量,可能被重用,又不想被篡改
    如何: 3步:

  • 用外層函數(shù)包裹要保護(hù)的變量和內(nèi)層函數(shù)
  • 外層函數(shù)將內(nèi)層函數(shù)返回到外部
  • 調(diào)用外層函數(shù),獲得內(nèi)層函數(shù)的對(duì)象,保存在外部的變量中——形成了閉包
  • 閉包形成的原因: 外層函數(shù)調(diào)用后,外層函數(shù)的函數(shù)作用域?qū)ο鬅o(wú)法釋放
    主動(dòng)使用閉包: 為一個(gè)函數(shù)綁定一個(gè)專(zhuān)屬的變量
    鄙視: 畫(huà)簡(jiǎn)圖

  • 找受保護(hù)的變量,并確定其最終值
  • 找內(nèi)層函數(shù)對(duì)象
    外層函數(shù)向外返回內(nèi)層函數(shù)對(duì)象: 3種:

  • return function(){}
  • 全局變量=function(){}
  • return arr/obj{function(){...}}
  • 27.OOP

    什么是對(duì)象: 內(nèi)存中存儲(chǔ)多個(gè)數(shù)據(jù)的獨(dú)立存儲(chǔ)空間都稱(chēng)為一個(gè)對(duì)象。
    什么是面向?qū)ο? 程序中都是用對(duì)象結(jié)構(gòu)來(lái)描述現(xiàn)實(shí)中一個(gè)具體事物。
    為什么: 為了便于大量數(shù)據(jù)的維護(hù)和查找
    何時(shí): 幾乎所有js程序,都使用面向?qū)ο蟮姆绞介_(kāi)發(fā)
    如何: 三大特點(diǎn): 封裝,繼承,多態(tài)
    封裝: 用對(duì)象來(lái)集中描述現(xiàn)實(shí)中一個(gè)具體事物的屬性和功能
    為什么: 便于維護(hù)和查找
    何時(shí): 今后只要使用面向?qū)ο蟮姆绞介_(kāi)發(fā),都要先封裝對(duì)象,再按需使用對(duì)象的屬性和功能。
    如何: 3種:

  • 用{}:
    var obj={
    屬性名:值,

    ... : ... ,

    //方法名:function(){...},
    方法名 (){...},
    }
    其中: 事物的屬性值會(huì)成為對(duì)象的屬性

    對(duì)象的屬性本質(zhì)是保存在對(duì)象中的一個(gè)變量事物的功能會(huì)成為對(duì)象的方法!方法的本質(zhì)是保存在對(duì)象中的一個(gè)函數(shù)

    如何訪問(wèn)對(duì)象的成員:
    訪問(wèn)對(duì)象的屬性: 對(duì)象.屬性名
    調(diào)用對(duì)象的方法: 對(duì)象.方法名()
    問(wèn)題: 對(duì)象自己的方法中要使用對(duì)象自己的屬性
    錯(cuò)誤: 直接用屬性名,報(bào)錯(cuò): 找不到變量

    為什么: 默認(rèn),不加.就使用的變量,只能在作用域鏈中查找,無(wú)法自動(dòng)進(jìn)入對(duì)象中

    解決一: 對(duì)象名.屬性名

    問(wèn)題: 對(duì)象名僅是一個(gè)普通的變量名,可能發(fā)生變化。

    正確解決: this.屬性名
    this: 自動(dòng)指正在調(diào)用當(dāng)前方法的.前的對(duì)象

    為什么: 不受對(duì)象名變量的影響 何時(shí): 只要對(duì)象自己的方法向訪問(wèn)對(duì)象自己的屬性時(shí),都必須加this.
  • js中對(duì)象的本質(zhì),其實(shí)就是一個(gè)關(guān)聯(lián)數(shù)組

  • 用new:
    var obj=new Object(); //創(chuàng)建空對(duì)象 等效于{}
    obj.屬性名=值;
    obj.方法名=function(){
    ... this.屬性名 ...
    }
  • 和關(guān)聯(lián)數(shù)組一樣,js中的對(duì)象也可隨時(shí)添加新屬性和方法。
    問(wèn)題: 反復(fù)創(chuàng)建多個(gè)相同結(jié)構(gòu)的對(duì)象時(shí),重復(fù)代碼太多,導(dǎo)致不便于維護(hù)
    解決:

  • 用構(gòu)造函數(shù):
    構(gòu)造函數(shù): 描述一類(lèi)對(duì)象統(tǒng)一結(jié)構(gòu)的函數(shù)
    為什么: 為了重用結(jié)構(gòu)代碼!
    何時(shí): 只要反復(fù)創(chuàng)建相同結(jié)構(gòu)的多個(gè)對(duì)象時(shí),都用構(gòu)造函數(shù)
    如何: 2步:

  • 定義構(gòu)造函數(shù)
    function 類(lèi)型名(屬性參數(shù)列表){
    this.屬性名=屬性參數(shù);
    this. ... = 屬性參數(shù);
    this.方法名=function(){

    this.xxx

    }
    }

  • 調(diào)用構(gòu)造函數(shù)創(chuàng)建新對(duì)象
    var obj=new 類(lèi)型名(屬性值列表)
    new: 1. 創(chuàng)建新的空對(duì)象

    2. 設(shè)置新對(duì)象繼承構(gòu)造函數(shù)的原型對(duì)象3. 用新對(duì)象調(diào)用構(gòu)造函數(shù)將構(gòu)造函數(shù)中的this都指向新對(duì)象4. 返回新對(duì)象的地址
  • 問(wèn)題: 構(gòu)造函數(shù)只能重用代碼,無(wú)法節(jié)約內(nèi)存!
    解決: 繼承:

    28.繼承:

    什么是: 父對(duì)象的成員,子對(duì)象無(wú)需創(chuàng)建,就可直接使用
    為什么: 代碼重用,節(jié)約內(nèi)存
    何時(shí): 只要多個(gè)子對(duì)象,擁有相同的成員時(shí),都應(yīng)只在父對(duì)象中定義一份,所有子對(duì)象共用即可!
    如何: js中繼承都是通過(guò)原型對(duì)象實(shí)現(xiàn)的

    什么是原型對(duì)象: 集中存儲(chǔ)同一類(lèi)型的所有子對(duì)象,共用成員的父對(duì)象 何時(shí): 只要繼承,必然原型對(duì)象 如何: 創(chuàng)建: 不用創(chuàng)建,買(mǎi)一贈(zèng)一每創(chuàng)建一個(gè)構(gòu)造函數(shù),都附贈(zèng)一個(gè)原型對(duì)象 繼承: 在創(chuàng)建子對(duì)象時(shí),new的第2步自動(dòng)設(shè)置子對(duì)象繼承構(gòu)造函數(shù)的原型對(duì)象訪問(wèn)成員: 優(yōu)先訪問(wèn)自有成員自己沒(méi)有,就去父對(duì)象(原型對(duì)象)中查找將成員添加到原型對(duì)象中: 構(gòu)造函數(shù).prototype.成員=值

    自有屬性和共有屬性:
    自有屬性: 保存在當(dāng)前對(duì)象本地,僅歸當(dāng)前對(duì)象獨(dú)有的屬性
    共有屬性: 保存在父對(duì)象中,所有子對(duì)象共有的屬性
    讀取屬性值: 子對(duì)象.屬性
    修改屬性值: 自有屬性,必須通過(guò)子對(duì)象自己修改

    共有屬性,只能用原型對(duì)象修改!

    內(nèi)置對(duì)象的原型對(duì)象:
    鄙視: 內(nèi)置對(duì)象: 11個(gè):

    String Number Boolean ——包裝類(lèi)型對(duì)象 Array Date RegExp Math Error Function Object Global (在瀏覽器中,被window代替)

    鄙視: 包裝類(lèi)型的理解

    什么是: 保存一個(gè)原始類(lèi)型的值,并提供操作原始類(lèi)型值的API 為什么: 原始類(lèi)型的值本身不具有任何功能 何時(shí): 只要試圖對(duì)原始類(lèi)型的值調(diào)用API時(shí),都會(huì)自動(dòng)使用包裝類(lèi)型對(duì)象來(lái)幫助原始類(lèi)型的值執(zhí)行操作。 如何: 1. 內(nèi)存中已經(jīng)預(yù)置了三大包裝類(lèi)型的對(duì)象:String Number Boolean2. 在試圖對(duì)原始類(lèi)型的值調(diào)用API時(shí),自動(dòng)檢測(cè)原始類(lèi)型的值的類(lèi)型名var n=345.678;typeof n => number3. 根據(jù)類(lèi)型名實(shí)例化對(duì)應(yīng)的包裝類(lèi)型對(duì)象,調(diào)用其APInew Number(n).toFixed(2) => 345.684. 執(zhí)行后,包裝類(lèi)型對(duì)象自動(dòng)釋放new Number釋放!

    29.OOP

    面向?qū)ο笕筇攸c(diǎn): 封裝,繼承,多態(tài)
    繼承:
    原型對(duì)象:
    內(nèi)置類(lèi)型的原型對(duì)象:
    一種類(lèi)型: 包含兩部分:

    1. 構(gòu)造函數(shù): 創(chuàng)建該類(lèi)型的子對(duì)象 2. 原型對(duì)象: 保存所有子對(duì)象的共有成員

    解決瀏覽器兼容性問(wèn)題: 舊瀏覽器無(wú)法使用新API

    1. 判斷當(dāng)前瀏覽器對(duì)應(yīng)類(lèi)型的原型對(duì)象中是否包含該API 2. 如果不包含,則自定義該API,添加到對(duì)應(yīng)類(lèi)型的原型對(duì)象中

    30.原型鏈:

    什么是: 由多級(jí)父對(duì)象,逐級(jí)繼承形成的鏈?zhǔn)浇Y(jié)構(gòu)
    保存著: 所有對(duì)象的屬性
    控制著: 對(duì)象屬性的使用順序:

    先自有,再共有

    鄙視: 如何判斷一個(gè)對(duì)象是數(shù)組類(lèi)型? 有幾種方法
    錯(cuò)誤: typeof : 只能區(qū)分原始類(lèi)型,函數(shù),無(wú)法進(jìn)一步區(qū)分引用類(lèi)型對(duì)象的具體類(lèi)型名
    正確: 4種:

  • 判斷原型對(duì)象:
    obj.__proto__==Array.prototype
    Array.prototype.isPrototypeOf(obj)
  • 判斷構(gòu)造函數(shù):
    obj.constructor==Array
    obj instanceof Array
  • 問(wèn)題: 不嚴(yán)格, 不但檢查直接父對(duì)象,且檢查整個(gè)原型鏈

  • 判斷對(duì)象內(nèi)部的class屬性
  • class屬性: 對(duì)象內(nèi)部的專(zhuān)門(mén)記錄對(duì)象創(chuàng)建時(shí)的類(lèi)型名的屬性
    問(wèn)題1: class屬性是內(nèi)部屬性,無(wú)法用.直接訪問(wèn)
    解決: 唯一的辦法: Object.prototype.toString()
    問(wèn)題2: 每種類(lèi)型的原型對(duì)象都重寫(xiě)了各自不同的toString()方法,子對(duì)象無(wú)法調(diào)用到Object.prototype.toString()
    解決: fun.call(obj) 讓obj強(qiáng)行調(diào)用任何一個(gè)fun

    Object.prototype.toString.call(obj)在執(zhí)行的一瞬間: obj.toString()結(jié)果:"[object Class]"

    鄙視: 何時(shí)將方法定義在原型對(duì)象中,何時(shí)將方法定義在構(gòu)造函數(shù)上
    實(shí)例方法和靜態(tài)方法:
    實(shí)例方法: 必須該類(lèi)型的子對(duì)象才能調(diào)用的方法
    比如: arr.sort() arr.push()
    何時(shí): 只要要求必須該類(lèi)型的子對(duì)象才能調(diào)用
    如何: 所有放在原型對(duì)象中的方法都是實(shí)例方法
    靜態(tài)方法: 不需要?jiǎng)?chuàng)建該類(lèi)型的子對(duì)象,任何對(duì)象都可使用的方法。
    比如: Array.isArray(fun)

    Array.isArray(date)Array.isArray(obj)

    何時(shí): 不確定將來(lái)調(diào)用該函數(shù)的對(duì)象類(lèi)型時(shí)
    如何: 添加到構(gòu)造函數(shù)對(duì)象上的方法都是靜態(tài)方法。可通過(guò)構(gòu)造函數(shù).靜態(tài)方法方式直接調(diào)用!

    31.多態(tài):

    什么是: 一個(gè)方法在不同情況下表現(xiàn)出不同的狀態(tài)
    包括:

  • 重載overload:
  • 重寫(xiě)override:
    什么是: 如果子對(duì)象覺(jué)得從父對(duì)象繼承來(lái)的成員不好用,可在本地定義同名的自有成員,覆蓋父對(duì)象的成員
    為什么: 覺(jué)得從父對(duì)象繼承來(lái)的成員不好用
    何時(shí): 只要覺(jué)得從父對(duì)象繼承來(lái)的成員不好用
    如何: 在本地定義同名的自有成員
  • 32.自定義繼承:

  • 只修改一個(gè)對(duì)象的父對(duì)象
    obj.__proto__=father
    Object.setPrototypeOf(obj,father)
  • 修改所有子對(duì)象的父對(duì)象:
    構(gòu)造函數(shù).prototype=father
    時(shí)機(jī): 在創(chuàng)建子對(duì)象之前換!
  • 兩種類(lèi)型間的繼承:
    何時(shí): 發(fā)現(xiàn)多個(gè)類(lèi)型之間擁有部分相同的屬性結(jié)構(gòu)和方法定義時(shí),都要抽象父類(lèi)型出來(lái)
    如何: 2步:

  • 定義抽象父類(lèi)型: 2步:

  • 定義構(gòu)造函數(shù)保存公共的屬性結(jié)構(gòu)
  • 定義原型對(duì)象保存公共的方法
  • 讓子類(lèi)型繼承父類(lèi)型: 2步:

  • 在子類(lèi)型構(gòu)造函數(shù)中借用父類(lèi)型構(gòu)造函數(shù)
    錯(cuò)誤: 直接調(diào)用: Flyer(fname,speed)
    原因: Flyer不用.不用new調(diào)用,其中的this默認(rèn)指window,Flyer中所有屬性泄露到全局
    正確: 用call將正確的this注入到Flyer中,代替錯(cuò)誤的this
    如何: Flyer.call(正確的this, fname,speed)
  • 讓子類(lèi)型原型對(duì)象繼承父類(lèi)型原型對(duì)象
    Object.setPrototypeOf(子類(lèi)型原型,父類(lèi)型原型)
  • 33.ECMAScript6

  • 嚴(yán)格模式:
    什么是: 比普通js運(yùn)行機(jī)制要求更嚴(yán)格的模式
    為什么: 普通的js運(yùn)行機(jī)制有很多廣受詬病的缺陷
    何時(shí): 今后所有項(xiàng)目必須運(yùn)行在嚴(yán)格模式下

  • 如果新項(xiàng)目,整個(gè)js文件啟用嚴(yán)格模式
  • 舊項(xiàng)目,逐個(gè)函數(shù)啟用嚴(yán)格模式
  • 如何:

  • 在script或整個(gè)js文件頂部,添加"use strict";
  • 在函數(shù)內(nèi)頂部,添加"use strict";
  • 規(guī)則: 4個(gè):

  • 禁止給未聲明的變量賦值
  • 將靜默失敗升級(jí)為錯(cuò)誤
  • 普通函數(shù)或匿名函數(shù)自調(diào)中的this默認(rèn)不再指向window,而是undefined
  • 禁止使用arguments, arguments.callee,...
  • 補(bǔ): arguments.callee 自動(dòng)獲得當(dāng)前正在調(diào)用的函數(shù)本身
    禁用,說(shuō)明強(qiáng)烈不推薦使用遞歸!

    34.保護(hù)對(duì)象:

    保護(hù)對(duì)象的屬性:
    ES5將對(duì)象屬性分為:
    命名屬性: 可用.直接訪問(wèn)到的屬性
    數(shù)據(jù)屬性: 直接存儲(chǔ)屬性值的屬性
    保護(hù)數(shù)據(jù)屬性: 4大特性:

    一個(gè)屬性包含四大特性:{value: 實(shí)際保存屬性值,writable: true/false, //只讀enumerable: true/false, //不可遍歷//不是徹底隱藏,用.依然可訪問(wèn)!configurable:true/false //1. 禁止刪除//2. 禁止修改其它特性//一旦改為false,不可逆 } 獲取一個(gè)屬性的四大特性: var attrs=Object.getOwnPropertyDescriptor(obj,"屬性") 修改四大特性: Object.defineProperty(obj,"屬性",{四大特性:值 }) 簡(jiǎn)寫(xiě): Object.defineProperties(obj,{屬性名:{特性:值,特性:值,},屬性名:{... : ...}})

    訪問(wèn)器屬性: 不直接存儲(chǔ)屬性值,僅提供對(duì)另一個(gè)數(shù)據(jù)屬性的保護(hù)
    何時(shí): 只要對(duì)一個(gè)屬性提供自定義規(guī)則的保護(hù)
    如何:

    添加: 只能用Object.defineProperty和defineProperties添加 四大特性: {get(){ return this.數(shù)據(jù)屬性 }set(val){ 如果驗(yàn)證val通過(guò)this.數(shù)據(jù)屬性=val否則報(bào)錯(cuò)}enumerable:configurable: }

    如何使用: 同普通的數(shù)據(jù)屬性用法一樣!

    在取值時(shí),自動(dòng)調(diào)用訪問(wèn)器屬性?xún)?nèi)部的get在賦值時(shí),自動(dòng)調(diào)用訪問(wèn)器屬性?xún)?nèi)部的set方法,同時(shí)將等號(hào)右邊的新值,交給val參數(shù)

    問(wèn)題: enumerable只能防住for in,防不住.,依然可用.直接修改被保護(hù)的數(shù)據(jù)屬性
    解決:
    內(nèi)部屬性: 不能用.直接訪問(wèn)到的屬性
    比如: class proto

    保護(hù)對(duì)象的結(jié)構(gòu): 3種

  • 防擴(kuò)展: 禁止給對(duì)象添加新屬性
    Object.preventExtensions(obj)
    原理: 內(nèi)部屬性: extensible:true

    preventExtensions將extensible改為false
  • 密封: 在防擴(kuò)展同時(shí),禁止刪除現(xiàn)有屬性
    Object.seal(obj)
    原理: 1. 將extensible改為false,禁止擴(kuò)展

    2. 自動(dòng)將所有屬性的configurable都改為false
  • 凍結(jié): 在密封的同時(shí),禁止修改一切屬性值
    Object.freeze(obj)
    原理: 1. 兼具密封的所有功能

    2. 又將每個(gè)屬性的writable自動(dòng)改為false!
  • Object.create()
    僅用父對(duì)象,就可創(chuàng)建子對(duì)象,
    同時(shí)還可為子對(duì)象擴(kuò)展自有屬性
    var child=Object.create(father,{
    //Object.defineProperties
    屬性名:{

    特性:值, 特性:值,

    }
    })
    鄙視: 描述Object.create的執(zhí)行原理

  • 創(chuàng)建空對(duì)象child
  • 自動(dòng)設(shè)置child的__proto__為father
  • 為child擴(kuò)展新的自有屬性
  • 35.call/apply/bind

    替換函數(shù)中不想要的this!
    call/apply: 立刻調(diào)用函數(shù),并臨時(shí)替換中的this為指定對(duì)象
    何時(shí): 只要調(diào)用函數(shù)時(shí),函數(shù)中的this不是想要的就用call換成想要的
    如果傳入函數(shù)的參數(shù),是以數(shù)組形式,整體傳入
    就用.apply(obj,arr)
    bind: 基于原函數(shù),創(chuàng)建一個(gè)新函數(shù),并永久綁定this為指定對(duì)象
    何時(shí): 不會(huì)立刻調(diào)用的函數(shù)(回調(diào)函數(shù))中的this,不是想要的,就可用bind創(chuàng)建一個(gè)新函數(shù),并永久綁定this!

    36.數(shù)組API:

    判斷:

  • 判斷數(shù)組中所有元素是否都符合條件
    arr.every(function(elem,i,arr){

    //elem: 當(dāng)前元素值 //i: 當(dāng)前位置 //arr: 當(dāng)前數(shù)組對(duì)象 return 判斷條件

    })

  • 判斷數(shù)組中是否包含符合條件的元素
    arr.some(function(elem,i,arr){

    return 判斷條件

    })

  • 遍歷:

  • forEach: 對(duì)原數(shù)組中每個(gè)元素執(zhí)行相同的操作
    arr.forEach(function(elem,i,arr){
    arr[i]=新值
    })
  • map: 依次取出原數(shù)組中每個(gè)元素執(zhí)行相同操作后,放入新數(shù)組。原數(shù)組不變
    arr.map(function(elem,i,arr){
    return 新值
    })
  • 過(guò)濾和匯總:

  • 過(guò)濾: 復(fù)制出原數(shù)組中符合條件的元素,放入新數(shù)組返回
    var subs=arr.filter(function(elem,i,arr){
    return 判斷條件
    })
  • 匯總: 將原數(shù)組中所有值統(tǒng)計(jì)出一個(gè)最終結(jié)論
    var result=arr.reduce(function(prev,elem,i,arr){
    //prev: 截止到目前,之前的臨時(shí)匯總值
    return prev+elem;
    })
  • 37.let: 代替var

    為什么
    問(wèn)題1: 聲明提前, 破壞程序原有執(zhí)行順序
    解決: let禁止在聲明之前,提前使用該變量
    問(wèn)題2: js沒(méi)有塊級(jí)作用域, 塊內(nèi)的變量,會(huì)污染到塊外
    解決: let會(huì)將當(dāng)前所在if/for/while...(){}變成塊級(jí)作用域

    后果: 塊內(nèi)的let出的變量不會(huì)影響外部!

    原理: 其實(shí)let就是匿名函數(shù)自調(diào)!
    let與for循環(huán),可形成閉包的效果
    強(qiáng)調(diào): 原來(lái)塊內(nèi)外都可使用的變量,出了塊,就不能用了!

    38.參數(shù)增強(qiáng):

    默認(rèn)值: function fun(參數(shù)1, 參數(shù)2,...,參數(shù)n=默認(rèn)值)
    強(qiáng)調(diào): 帶默認(rèn)值的參數(shù)必須定義在列表末尾
    原理: 參數(shù)n=參數(shù)n||默認(rèn)值;
    rest: 代替了arguments
    何時(shí): 當(dāng)函數(shù),不確定參數(shù)個(gè)數(shù)時(shí)——重載
    為什么: arguments的缺點(diǎn):

  • 類(lèi)數(shù)組對(duì)象,不是數(shù)組
  • 只能后去全部,不能有選擇的分段獲取
  • 如何: 定義函數(shù)時(shí): function fun(參數(shù)1,參數(shù)2,..., ...數(shù)組名)
    數(shù)組名, 是一個(gè)純正的數(shù)組,且可有選擇的分段獲取
    原理: var arr=[].slice.call(arguments[,starti]);//將類(lèi)數(shù)組對(duì)象轉(zhuǎn)為數(shù)組
    spread: 代替apply
    為什么: apply雖然可打散數(shù)組類(lèi)型參數(shù)為單個(gè)值,但是必須和替換this的操作捆綁使用
    何時(shí): 只要僅需要打散數(shù)組類(lèi)型參數(shù)為單個(gè)值時(shí)
    如何: 調(diào)用時(shí): fun(參數(shù)值1,參數(shù)值2,...數(shù)組)

  • 箭頭函數(shù): 代替回調(diào)函數(shù)中的function

  • 何時(shí): 只要回調(diào)函數(shù),都不再使用function,而是使用箭頭函數(shù)
    如何:

  • 去function改=>
  • 如果只有一個(gè)參數(shù),可省略()
  • 如果函數(shù)體只有一句話(huà),則{}可省略

    更簡(jiǎn)化: 如果僅有的一句話(huà)還是return,可省略return
  • 特點(diǎn): 內(nèi)外共用同一個(gè)this ——代替bind
    問(wèn)題: 如果反而希望內(nèi)外this不通用時(shí),就不能用箭頭函數(shù)

    40.模板字符串: 代替+號(hào)拼接字符串

    ESLint規(guī)定,不允許使用+拼接字符串
    如何:

  • 定義模板: 左右模板內(nèi)容都必須放在``中
  • 在模板中嵌入變量或表達(dá)式,動(dòng)態(tài)生成內(nèi)容:
    模板內(nèi),可用${...}嵌入任何合法的js變量或語(yǔ)句
  • 41.解構(gòu): 簡(jiǎn)化批量賦值

    什么是: 將一個(gè)對(duì)象/數(shù)組中的成員和元素,分別提取出來(lái),單獨(dú)使用。
    為什么: 避免反復(fù)使用對(duì)象名/數(shù)組名
    何時(shí): 只要希望將一個(gè)大的對(duì)象或數(shù)組中的每個(gè)成員單獨(dú)取出使用時(shí)
    如何: 3種:

  • 數(shù)組解構(gòu): 下標(biāo)對(duì)下標(biāo)
  • 對(duì)象解構(gòu): 屬性對(duì)屬性
  • 參數(shù)解構(gòu): 屬性對(duì)屬性
    定義函數(shù)時(shí):
    問(wèn)題: 普通函數(shù)的參數(shù)列表的順序和個(gè)數(shù)是固定的
    解決: 使用對(duì)象語(yǔ)法定義參數(shù)列表
    優(yōu)點(diǎn): 將來(lái)傳入的參數(shù)個(gè)數(shù),順序與對(duì)象列表無(wú)關(guān)
    調(diào)用函數(shù): 也用對(duì)象語(yǔ)法傳入?yún)?shù)
    賦值過(guò)程中,采用對(duì)象結(jié)構(gòu)的方式,為參數(shù)變量賦值
  • 42.for...of 在特定情況下,代替for循環(huán)

    什么是: 依次遍歷數(shù)組/類(lèi)數(shù)組對(duì)象中每個(gè)元素的值
    vs for...in: 依次遍歷關(guān)聯(lián)數(shù)組/對(duì)象中每個(gè)成員的屬性名
    何時(shí): 如果希望從頭到尾遍歷整個(gè)數(shù)組或類(lèi)數(shù)組對(duì)象
    如何:

    for(var elem of arr){elem}

    局限: 無(wú)法獲得當(dāng)前位置; 無(wú)法控制遍歷的進(jìn)度/順序; 無(wú)法有選擇的遍歷部分

    43.class: 代替?zhèn)鹘y(tǒng)的封裝,繼承,多態(tài)的語(yǔ)法

    封裝:

    class Student {constructor(sname,sage){... ...}intr (){//Student.prototype.intr} fun (){}}

    繼承:

    class Flyer {constructor(fname,speed){... ...}fly (){... ...}}class Plane extends Flyer{constructor(fname,speed,score){//super指向父類(lèi)型構(gòu)造函數(shù),且自動(dòng)替換thissuper(fname,speed)... ...}getScore (){... ...}}

    靜態(tài)方法:

    class User{constructor(uname,upwd){this.uname=uname;this.upwd=upwd;}save(){//保存在User.prototype中的實(shí)例方法console.log("保存當(dāng)前對(duì)象");}static findOne(){//靜態(tài)方法,定義在構(gòu)造函數(shù)上return new User();}}var user=new User(...);user.save();//調(diào)用實(shí)例方法User.findOne();//調(diào)用靜態(tài)方法

    44.Promise: 解決: 回調(diào)地獄

    什么是callback hell: 由于使用參數(shù)傳遞回調(diào)函數(shù),導(dǎo)致步驟多時(shí),參數(shù)的嵌套層級(jí)很深。
    何時(shí): 只要異步調(diào)用,可能發(fā)生延遲時(shí),都要用Promise代替?zhèn)鹘y(tǒng)參數(shù)callback
    如何: 定義時(shí)

    function 第一件事(){return new Promise(fn=>{第一件事的內(nèi)容fn()})}function 第二件事(){return new Promise(fn=>{第二件事的內(nèi)容fn()})}function 第三件事(){第三件事的內(nèi)容}

    調(diào)用時(shí):

    第一件事()//return Promise(fn).then(第二件事)//return Promise(fn).then(第三件事)

    鄙視題:

  • 將類(lèi)數(shù)組對(duì)象復(fù)制為數(shù)組:
    var arr2=Array.prototype.slice.call(arguments)
    將類(lèi)數(shù)組對(duì)象復(fù)制為數(shù)組,并選取指定位置的剩余元素
    var arr2= Array.prototype.slice.call(arguments,starti)

    相當(dāng)于arguments.slice(starti)

    其實(shí)更簡(jiǎn)單的: var arr2= [].slice.call(arguments,starti)

  • promise中的錯(cuò)誤處理:
    其實(shí): new Promise(可接收2件事)

    .then( ) .catch( )

    new Promise((正常函數(shù),出錯(cuò)函數(shù))=>{

    如果順利執(zhí)行:調(diào)用正常() 否則調(diào)用出錯(cuò)()

    })

  • 等待多個(gè)任務(wù)完成
    前提: 每個(gè)任務(wù)都必須都返回Promise
    如何: Promise.all([

    task1(), task2(),...]).then(()=>{所有任務(wù)完成后才執(zhí)行的任務(wù)})

  • 47 ?
  • 總結(jié)

    以上是生活随笔為你收集整理的前端知识点总结——JS高级(持续更新中)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    91免费版成人 | 91精品网站在线观看 | 亚洲精品国偷自产在线99热 | 国产成人精品av在线 | 亚洲视频综合 | 精品国产一区二区三区久久久蜜月 | 国产精品99久久久久久人免费 | 欧美久久久久久久久久久久久 | 欧美日韩1区 | 婷婷视频在线 | 最近中文字幕免费av | 天天操天天操天天操天天操天天操 | 中文字幕在线播放日韩 | 日日夜夜天天干 | 四虎在线永久免费观看 | 五月天婷婷在线播放 | 综合五月婷婷 | 亚洲最新av| 91插插视频 | 国产亚洲精品久久久久久大师 | 五月天激情综合 | 日韩精品不卡在线 | 天天操夜夜曰 | 激情影院在线观看 | 欧美另类tv | 国产精品 国产精品 | 久草视频视频在线播放 | 在线免费观看av网站 | a视频免费在线观看 | 精品久久美女 | 亚洲精品97 | 日韩专区在线观看 | 国产精品涩涩屋www在线观看 | 欧美美女激情18p | 毛片基地黄久久久久久天堂 | 99久久毛片| 欧美日韩国产一区二 | 亚洲精品字幕 | www国产在线 | 日日草夜夜操 | 国产亚洲精品久久久久久电影 | 亚洲精品a区 | 国产精品久久久久久久久久久不卡 | 亚洲国产日韩精品 | 最近高清中文在线字幕在线观看 | 久久精品久久精品久久精品 | 天天干天天操天天操 | 美女网色| 亚洲美女在线一区 | 国产精品自产拍在线观看中文 | 国产无遮挡又黄又爽馒头漫画 | 精品福利片| 91精品一区二区三区蜜臀 | 免费黄色在线播放 | 亚洲专区 国产精品 | 免费在线国产精品 | 500部大龄熟乱视频使用方法 | 91精品国产麻豆 | 免费高清在线观看电视网站 | 久久夜色精品国产欧美一区麻豆 | 国产成人福利片 | 久久久久免费精品国产小说色大师 | 天天爱天天 | 中文av免费| 亚洲精品国产综合99久久夜夜嗨 | 久热久草 | 一本到在线 | 精品特级毛片 | 天天拍夜夜拍 | 99热这里只有精品免费 | 福利视频区| 少妇搡bbbb搡bbb搡69 | 综合网在线视频 | 中文字幕视频 | 日本黄色免费电影网站 | 在线韩国电影免费观影完整版 | 久久久999精品视频 国产美女免费观看 | 91插插视频 | 天天操天操 | 亚洲最大免费成人网 | 亚洲人人网| 国产精品白虎 | 色综合天天狠天天透天天伊人 | 免费能看的av | 久久久久久看片 | 色噜噜色噜噜 | 国产精品毛片完整版 | 国产精选在线 | 激情影音 | 成人黄色资源 | 黄色www免费| 亚洲专区 国产精品 | 97伊人网| 日韩精品在线播放 | 四虎伊人 | 三级毛片视频 | 亚洲精品国偷自产在线91正片 | 欧美激情视频一区 | 日韩欧美视频免费观看 | 日韩草比 | 精精国产xxxx视频在线播放 | 婷婷丁香激情网 | 狠狠激情中文字幕 | 视频 国产区| 不卡的av电影在线观看 | 99精品欧美一区二区三区 | 日本黄色免费看 | 国产精品日韩久久久久 | 91亚洲网站 | 国产一区高清在线观看 | 人人草在线视频 | 香蕉国产91 | 91精品国产乱码久久桃 | 欧美国产精品久久久久久免费 | 国产一级在线 | 又黄又刺激视频 | 国内成人综合 | 久久精品一区 | 国产精品一区二区在线看 | 欧美成人69av | 国产一级淫片免费看 | 九九热在线视频免费观看 | 欧美激情视频三区 | 视频在线观看入口黄最新永久免费国产 | 天天综合操 | 韩国av一区二区三区 | 在线成人免费 | 欧美久久成人 | 99在线热播精品免费 | 精品久久网站 | 成年美女黄网站色大片免费看 | 日韩视频中文字幕在线观看 | 91爱爱网址 | 国产精品久久久区三区天天噜 | 黄色91免费观看 | 欧美日韩中文在线 | 久久1电影院 | 久久婷婷国产色一区二区三区 | 射射射综合网 | 在线观看国产日韩 | 欧美日韩69 | 久久久久欠精品国产毛片国产毛生 | 色综合天天狠天天透天天伊人 | 99色视频在线 | 久久理论电影 | 欧美一级片 | 国产在线小视频 | 欧美午夜一区二区福利视频 | 91插插插免费视频 | 激情综合电影网 | 手机看片国产日韩 | 亚洲免费精品视频 | 青草视频在线播放 | 久久看毛片 | 天天夜夜狠狠操 | 亚洲久草视频 | 午夜999| 日韩不卡高清 | 99在线热播精品免费 | 久久精品中文字幕少妇 | 91在线影视| 国产精品免费一区二区三区 | 亚洲精品午夜国产va久久成人 | 国产精品一区二区三区观看 | 色999精品 | 国产精品一区二区av麻豆 | 国产99久久久精品视频 | 天天干天天做 | 亚洲在线激情 | 7799av| 中文字幕视频一区二区 | 亚洲区另类春色综合小说 | 久久久亚洲影院 | 国产黄色免费在线观看 | 国产小视频福利在线 | 欧美国产一区二区 | 91视频 - 114av| 天天激情在线 | 日本公妇在线观看 | 91在线观看视频 | 中文字幕频道 | 蜜臀av一区 | 国产精品黑丝在线观看 | 亚洲永久精品一区 | 天天综合久久综合 | 人人插人人澡 | 免费色视频在线 | 一区中文字幕电影 | 就要干b | а天堂中文最新一区二区三区 | 天天操狠狠操网站 | 亚洲电影网站 | 射射射综合网 | 亚洲第一伊人 | 91精品免费 | 国产精品2019 | 国产一区二区在线观看视频 | 美女精品国产 | 国产一级免费在线观看 | 国产免费又黄又爽 | 奇人奇案qvod | 中文字幕日韩有码 | 二区三区在线观看 | 国产日韩欧美中文 | 激情五月在线观看 | 欧美精品一区二区三区一线天视频 | 国产精品久久麻豆 | 国产精品av久久久久久无 | 日日干夜夜干 | 亚洲黄网站| www.xxx.性狂虐| 狠狠操狠狠干天天操 | 久久在线观看视频 | 日韩一级电影网站 | 狠狠黄| 视频在线日韩 | 久久国精品 | 亚洲一区二区高潮无套美女 | 色欧美88888久久久久久影院 | 色99网| 在线网站黄 | 久久国产精品系列 | 男女日麻批 | 天天鲁天天干天天射 | 岛国av在线 | 深爱婷婷网 | 精品三级av| 在线日韩 | 九九热99视频 | 日韩sese| 黄色日本免费 | 激情婷婷久久 | 六月激情久久 | 91在线影视| 精品一区三区 | 久久久久婷 | 国产亚洲精品日韩在线tv黄 | 伊人开心激情 | 久久在线免费 | 国内精品久久久久久久久久久久 | 亚洲精选视频免费看 | 精品久久久久国产免费第一页 | 欧美成人在线免费 | 成人污视频在线观看 | 亚州成人av在线 | 久久久国产精品成人免费 | 久久免费精品视频 | 国产黑丝袜在线 | 天天射天天操天天 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 网址你懂的在线观看 | 亚洲成av片人久久久 | 香蕉色综合| 亚洲精品久久在线 | 99精品电影 | 毛片网站免费 | 欧美日韩高清一区二区三区 | 中文字幕一区二区三区在线视频 | 久香蕉| 81国产精品久久久久久久久久 | 欧美日韩综合在线 | 91视频首页 | 国产91粉嫩白浆在线观看 | 中文字幕在线观看91 | 日韩在线免费看 | 又黄又网站 | www狠狠操| 久久免费在线视频 | 国产精品久久亚洲 | 91久久偷偷做嫩草影院 | av三级av | 国产亚洲精品精品精品 | www夜夜操 | 亚洲一级久久 | 操老逼免费视频 | 国产亚洲精品久久久久久久久久 | 欧美精品久久久久久久久久丰满 | 最近乱久中文字幕 | 国产在线播放一区二区 | 免费看高清毛片 | 午夜av免费在线观看 | 久久久精品一区二区三区 | 亚洲成人家庭影院 | 精品久久久久久久久久久久久久久久久久 | 亚洲精品456在线播放乱码 | 九九热久久免费视频 | 亚洲精品影院在线观看 | 亚洲五月| 国产成人一区三区 | 国产午夜一级毛片 | 激情网色| 免费观看成人网 | 亚洲精品午夜久久久久久久久久久 | 久久国产欧美日韩精品 | 免费黄色网址网站 | 狠狠操狠狠干2017 | 国产午夜精品一区 | 97超碰成人 | 久久艹综合 | 日本精品午夜 | 成人午夜电影在线播放 | 国产精品久久一区二区三区不卡 | 三级黄色大片在线观看 | 久久久久黄色 | 亚洲综合欧美激情 | 亚洲成aⅴ人片久久青草影院 | 日韩av区| 色天天综合久久久久综合片 | 国产特级毛片aaaaaa毛片 | 狠狠色丁香婷婷 | 国产精品久久久久久久久久久不卡 | 91在线一区 | 人人草天天草 | av在线进入 | 久久久久免费观看 | 综合激情网 | 五月婷婷一区二区三区 | 日本激情视频中文字幕 | 精品在线你懂的 | 午夜精品一区二区三区免费 | 日韩在线一二三区 | 丝袜美女视频网站 | 97视频网址 | 成人四虎影院 | 成人小视频在线播放 | 夜添久久精品亚洲国产精品 | 午夜精品影院 | 99在线观看视频网站 | 在线视频观看你懂的 | 精品一区二区三区久久 | 亚洲一级性 | 2018亚洲男人天堂 | 国产二区视频在线观看 | 精品女同一区二区三区在线观看 | 中文字幕视频在线播放 | 成人天堂网 | 国产高清视频网 | 又爽又黄又无遮挡网站动态图 | 99爱这里只有精品 | 国产精品免费久久久久影院仙踪林 | 精品久久久久久综合 | 欧美日韩在线精品一区二区 | 免费日韩电影 | 亚洲成人av电影在线 | 亚洲精品1区2区3区 超碰成人网 | 91九色免费视频 | 亚洲成aⅴ人片久久青草影院 | 日韩在线观看一区二区三区 | 中文字幕久久精品一区 | 国产小视频免费观看 | 人人澡av | 国产精品观看在线亚洲人成网 | 亚洲午夜精品电影 | 亚洲免费a | 欧美 日韩 成人 | 亚洲伊人网在线观看 | 亚洲天天摸日日摸天天欢 | 久久 亚洲视频 | 午夜精品99久久免费 | 麻豆国产视频下载 | 欧美永久视频 | 97成人在线观看视频 | 狠狠天天 | 99中文在线 | 中文字幕在线观看第二页 | 蜜臀av一区二区 | 国产精品网在线观看 | 九九涩涩av台湾日本热热 | 99在线精品视频在线观看 | 国产免费亚洲 | 国产亚洲精品女人久久久久久 | 欧美精彩视频在线观看 | 日韩av免费在线看 | 中文字幕在线一区二区三区 | 精品国产综合区久久久久久 | 97在线观看| 天天操天天色综合 | 成年人黄色av| 亚洲精品国偷拍自产在线观看蜜桃 | 午夜久久久久久久久 | 在线之家官网 | 久久久久久久久久久成人 | 国产在线中文字幕 | 欧美久久精品 | 国产精品1024 | 不卡av在线 | 91最新中文字幕 | 91插插视频 | 国产分类视频 | 91精品国产高清自在线观看 | 射射色| 国产黄色精品在线观看 | 久久高清av | 伊人久久国产 | 亚州日韩中文字幕 | 精品久久久久久国产偷窥 | 久久久久久久久久久免费视频 | 91久久爱热色涩涩 | 青青久草在线视频 | 欧美国产在线看 | 激情婷婷在线观看 | 久久伦理电影 | 日日操狠狠干 | 99久久精品国产一区二区成人 | 成人av电影在线观看 | 日韩中文在线观看 | 国产国语在线 | 日本女人逼 | 欧美久草在线 | 人人爽人人爽av | 最近日本mv字幕免费观看 | 久久久久 免费视频 | 国产又粗又猛又爽又黄的视频先 | www黄色软件 | 久久久影院一区二区三区 | 婷久久 | 日本黄色大片免费看 | 国产精品久久久久久久久久不蜜月 | 精选久久| 在线视频黄 | 久久久久久久影院 | 九色琪琪久久综合网天天 | 久久99国产精品自在自在app | 麻豆你懂的 | 日韩有码在线播放 | 国产成人三级在线 | 亚洲精品久久久久999中文字幕 | 精品国产一区二区三区久久久蜜月 | 亚洲国产精品影院 | 久久久精品视频成人 | 天天插天天干天天操 | 在线视频在线观看 | 欧美在线视频精品 | 欧美大片www | 国产午夜精品一区二区三区 | 久久久久福利视频 | 亚洲极色 | 日本高清xxxx | 天天色棕合合合合合合 | 免费日韩 精品中文字幕视频在线 | 久久综合久久八八 | 狠狠狠色丁香婷婷综合激情 | 91人人视频在线观看 | 国产在线第三页 | 午夜在线免费视频 | 99视频在线观看视频 | 黄色av一区二区 | 香蕉视频免费看 | 久草五月 | 91九色蝌蚪视频 | 国产又粗又猛又爽 | 成年人在线观看免费视频 | 久草视频免费观 | 天天插天天干 | 亚洲精品国产精品国自 | 久久久官网 | 亚洲区精品 | 亚洲理论影院 | 色婷婷综合久久久久 | 日韩伦理一区二区三区av在线 | 日韩高清激情 | 欧美日韩大片在线观看 | 免费网站观看www在线观看 | 在线观看激情av | 国产精品18久久久 | 怡红院久久 | 激情网站| 福利二区视频 | 在线日本看片免费人成视久网 | 久久伊人八月婷婷综合激情 | 精品三级av| 国产在线理论片 | 丁香久久久| 热久久免费视频 | 99久久精品国产一区 | 91九色网站 | 日韩久久精品一区二区 | 国产成人一区二区三区电影 | 亚洲精品456在线播放 | 午夜精品久久久久久久99婷婷 | 99热手机在线观看 | 国产精品免费在线播放 | 国产一级小视频 | 亚洲美女在线国产 | 波多野结衣动态图 | 国产精品2020 | 97超碰资源| 在线观看av网站 | 免费国产一区二区 | 亚洲精品美女 | 国产又粗又猛又色又黄网站 | 国产三级视频在线 | 在线激情影院一区 | 99精品免费久久久久久久久日本 | 麻豆国产电影 | 亚洲综合色视频在线观看 | 亚洲成a人片在线www | 精品999在线 | 福利视频一区二区 | 国产无吗一区二区三区在线欢 | 久久国产精品成人免费浪潮 | 亚洲狠狠干 | 久久私人影院 | 亚洲精品乱码久久久久v最新版 | 日日爽| 在线 精品 国产 | 97香蕉超级碰碰久久免费软件 | 日韩中字在线观看 | 97人人爽人人 | 中文日韩在线视频 | 亚洲国产精品成人精品 | 精品国产一区二区三区四 | 亚洲一区二区视频在线 | 丁香六月av | 亚洲日本一区二区在线 | 久草在线综合 | 99国产情侣在线播放 | av免费观看在线 | 97视频免费在线看 | 五月天中文在线 | 99精品免费在线 | 婷婷丁香在线观看 | 91探花国产综合在线精品 | 日韩av影视在线观看 | 九九免费观看视频 | 国产只有精品 | 色香蕉在线视频 | 中文字幕有码在线观看 | 在线性视频日韩欧美 | 亚洲一区视频在线播放 | 久久国产经典 | 午夜精品一区二区三区免费视频 | 亚洲国产视频在线 | 天天射射天天 | 中文字幕在线观看av | 99精品美女| 久久精品欧美一区 | 九九九视频精品 | 国内精品久久久久影院日本资源 | 在线黄色免费 | 国产精品成人自产拍在线观看 | 激情图片qvod | 夜夜躁天天躁很躁波 | 国产亚洲精品久久久久久无几年桃 | 激情开心网站 | 久久精品国产v日韩v亚洲 | 国产老太婆免费交性大片 | 婷婷六月色 | a√资源在线 | 免费黄色av | 国产免费观看高清完整版 | av丝袜在线 | 久久久精品免费观看 | 成人午夜黄色影院 | 精品久久网 | 夜夜骑日日 | 国产精品久久久久久吹潮天美传媒 | 国产精品1区 | 天天拍天天色 | 免费高清在线视频一区· | 91成人在线观看喷潮 | 国产高清视频在线播放 | 久久色视频 | 国产一区在线视频 | 久久免费黄色大片 | 97狠狠干 | 国产精品美女网站 | 黄a网站 | 91最新在线观看 | 色婷婷综合久久久中文字幕 | www视频在线免费观看 | 美女久久久 | 东方av免费在线观看 | 香蕉视频久久 | 国产成人精品午夜在线播放 | 久久视精品 | 91大神精品视频在线观看 | 国产精品18久久久 | 午夜免费视频网站 | 在线视频一区观看 | 久久国产片 | 国产精品一区免费在线观看 | 99久久婷婷国产综合精品 | 婷婷激情五月 | 日韩av网页| 在线视频欧美日韩 | 久久精品免费播放 | 超碰日韩| jizz999| 国产96在线视频 | 国产精品久久人 | 亚洲欧美一区二区三区孕妇写真 | 婷婷九九 | 日韩欧美精品一区二区三区经典 | 欧美成人黄色片 | 久久a热6 | 99人成在线观看视频 | 久久亚洲精品国产亚洲老地址 | 国产精品普通话 | 蜜桃视频精品 | 美女性爽视频国产免费app | 午夜天使 | 久久精品综合网 | 五月天婷亚洲天综合网精品偷 | 午夜精品福利一区二区三区蜜桃 | 国产免费观看久久 | 国产精品www | 九草视频在线观看 | 黄色av一区二区三区 | 99在线观看免费视频精品观看 | 深爱婷婷网 | 欧美极品裸体 | 精品视频免费 | 婷婷丁香六月 | 91成人网在线观看 | 亚洲精选视频在线 | 人人爽人人爽人人爽学生一级 | 久久这里只有精品1 | 久久久精品99 | 国产精品手机播放 | 久久久视屏 | 九九热在线视频免费观看 | 特级毛片在线免费观看 | 国产精品久久久久久久久久白浆 | 亚洲综合色婷婷 | 在线看毛片网站 | 久久久久久久精 | 免费男女网站 | 亚洲欧美日韩一区二区三区在线观看 | 国产在线播放观看 | 国产永久免费观看 | 一级特黄aaa大片在线观看 | 色国产精品一区在线观看 | 91av综合 | 中文字幕在线播放日韩 | 91香蕉视频| 国产精品国产亚洲精品看不卡 | 国产精品一码二码三码在线 | 国产午夜精品在线 | 精品国产一区二区三区四 | 精品免费久久久久 | 精品久久久久久久久中文字幕 | 99精品国产高清在线观看 | 亚洲性视频 | 国产精品久久久久久婷婷天堂 | 精品在线视频观看 | 亚洲一区二区精品3399 | 91视频在线看 | 亚洲高清在线观看视频 | 午夜精品一区二区三区可下载 | 久久国产精品二国产精品中国洋人 | 国产精品18毛片一区二区 | 国产精品九九久久99视频 | 麻花豆传媒mv在线观看网站 | 免费在线a | 久久夜色精品国产欧美乱极品 | 国产中文字幕在线免费观看 | 久久久久久久18 | 日韩一区二区三区免费电影 | 成人小视频免费在线观看 | 黄色av网站在线观看免费 | 精品亚洲一区二区三区 | 日本中文字幕在线电影 | 亚洲美女免费精品视频在线观看 | 中文字幕在线第一页 | 人人看人人 | 五月在线视频 | 天天干天天干天天干天天干天天干天天干 | 国产精品美女在线 | 精品久久久久久国产偷窥 | 久久露脸国产精品 | 亚洲 中文字幕av | av一级在线| 日韩国产精品一区 | 国产美女视频免费观看的网站 | 久久久久国产精品免费网站 | 国产一二三四在线观看视频 | 亚洲黄色在线免费观看 | 日韩免费网站 | 天天干天天干 | 欧美黄色免费 | 特级黄录像视频 | 欧美色一色 | 国产精品igao视频网网址 | 久久久黄色 | 欧美91精品久久久久国产性生爱 | 久久男人影院 | 色婷婷狠狠干 | 91视频在线观看大全 | 夜夜婷婷| 日日日日日 | 国产美女免费 | 欧美性大胆 | 91精品国产九九九久久久亚洲 | 亚洲精品综合欧美二区变态 | 久久国产免费看 | 91丨九色丨首页 | 丁香六月婷 | 久久久国产99久久国产一 | 国产一区91 | 欧美激情亚洲综合 | 免费a视频 | 香蕉视频91 | 久久夜色精品国产欧美一区麻豆 | 一区二区精品久久 | 国产精品igao视频网网址 | 在线观看日韩中文字幕 | 成人片在线播放 | 91在线观 | 国产一区二区在线观看视频 | 亚洲国产精品视频 | 久久久久黄| 国产在线va | 五月的婷婷 | 免费国产一区二区视频 | 黄色成人av网址 | 亚洲精品国产区 | 国产精品第| 欧美精品久久久久久久久老牛影院 | 中文字幕精品三区 | 久久国产精品免费 | 精品毛片一区二区免费看 | 亚洲色视频 | 丁香婷婷在线 | 国产高清不卡在线 | 亚洲精品中文字幕视频 | 黄色在线观看免费 | 日韩一区二区免费在线观看 | 国产资源网 | 毛片一级免费一级 | 欧美另类一二三四区 | 免费看三级黄色片 | 国产精品久久久久久久久久免费看 | av不卡中文字幕 | 欧美福利精品 | 97综合在线| 91网址在线看 | 日韩一区视频在线 | 91在线www| 国产精品成人免费精品自在线观看 | 青青草国产成人99久久 | 中文字幕网站 | 欧美日韩一区二区在线 | 亚洲欧美视频在线 | 99久久国产免费免费 | 操老逼免费视频 | 精品国产三级 | 国产对白av | 天天综合网天天综合色 | 黄色一级在线视频 | 麻豆一精品传二传媒短视频 | 亚洲高清精品在线 | 女人18毛片a级毛片一区二区 | 欧美a级在线 | 黄污视频大全 | 国产精品视频地址 | 又长又大又黑又粗欧美 | 亚洲综合激情网 | 四虎在线视频 | 欧美色图88 | 看国产黄色片 | 成人午夜电影网站 | 天天插日日操 | 色五月色开心色婷婷色丁香 | 欧美人交a欧美精品 | 欧美乱熟臀69xxxxxx | 美州a亚洲一视本频v色道 | 又黄又爽又无遮挡免费的网站 | 免费在线观看av | 中文字幕在线第一页 | 国产午夜一区二区 | 99国产成+人+综合+亚洲 欧美 | 午夜av免费观看 | 五月婷婷在线观看视频 | 国产第一页在线播放 | 欧美一级淫片videoshd | 日韩免费观看一区二区三区 | 国产精品6 | 操久久网 | 成人a视频在线观看 | 国产精品久久久网站 | 国产成人1区 | 国产h片在线观看 | 啪啪免费观看网站 | 久艹视频在线免费观看 | 欧美国产一区在线 | 午夜黄色一级片 | 国产成人一区二区啪在线观看 | 在线观看av的网站 | 久久乐九色婷婷综合色狠狠182 | 狠狠插天天干 | 久久久久久97三级 | 久草视频免费在线观看 | 成人精品在线 | 国产精品福利无圣光在线一区 | 国产在线精 | 天天弄天天操 | 欧美日韩一区二区在线 | 婷婷色网址 | 九九九九精品九九九九 | av成人动漫 | 亚洲精品男人天堂 | 天天干天天拍天天操 | 欧美激情综合网 | 国产在线播放一区 | 精品国产一区二区三区噜噜噜 | avav99| 国产视频1 | 中文字幕视频一区二区 | 在线观看免费成人 | 久久久久国产免费免费 | 天天在线免费视频 | 四虎免费在线观看视频 | 欧美一区成人 | 日韩超碰在线 | 久久精品在线免费观看 | 久久精品99国产 | 成年人免费电影 | 国产精品夜夜夜一区二区三区尤 | 久久a视频| 亚洲特级毛片 | 一级一级一片免费 | 天堂av免费看 | 五月婷婷丁香网 | 免费看的黄网站 | 一区二区精品在线视频 | 91传媒在线观看 | 成人播放器| 日韩在线观看不卡 | 国产成人av在线影院 | 久草在线在线精品观看 | 久久精品视频网站 | adc在线观看 | 久久综合国产伦精品免费 | 天干啦夜天干天干在线线 | 色综合天天综合网国产成人网 | 九九九热精品免费视频观看网站 | 草久久久久 | 亚洲国产免费看 | 99精品毛片 | 在线视频一二三 | 激情综合网五月婷婷 | 久久久天堂 | 亚洲激精日韩激精欧美精品 | www.黄色 | 一区二区三区在线免费观看视频 | 国产亚洲精品久久久久久移动网络 | 美女网站免费福利视频 | 中文字幕一区二区三 | 中文字幕亚洲欧美 | 热久久精品在线 | 麻豆免费视频观看 | av电影中文字幕 | 91视频中文字幕 | 久久视频一区二区 | 丁香五香天综合情 | 免费进去里的视频 | 黄色免费视频在线观看 | 国产麻豆精品传媒av国产下载 | 成人免费在线观看电影 | 一区二区三区免费在线观看视频 | 激情五月亚洲 | 99re国产视频| 成年人在线免费看视频 | 一区二区伦理 | 久久99在线观看 | 中文字幕国产 | 韩国精品福利一区二区三区 | 天堂在线视频免费观看 | 国产护士av | 国产999免费视频 | 亚洲天天综合 | 免费中文字幕在线观看 | 夜夜操天天 | 国产午夜麻豆影院在线观看 | 久久精品视频4 | 91理论片午午伦夜理片久久 | 中文字幕国产视频 | 五月婷婷丁香六月 | 成人在线播放视频 | 91传媒在线观看 | 国产精品一区二区av影院萌芽 | 91视频在线免费 | 久久久久久久久久久高潮一区二区 | 99久热在线精品视频观看 | 亚洲精色 | 日韩欧美在线高清 | 亚洲aⅴ乱码精品成人区 | 看污网站 | 色综合激情久久 | 日本精品中文字幕在线观看 | 日韩精品在线看 | 免费黄色av电影 | 黄色一级大片在线免费看产 | 亚洲日日夜夜 | 99免费国产 | 中文字幕有码在线 | 色操插| 在线视频一二区 | 精品国产一区二区三区四 | 久久国产美女 | 欧美激情另类文学 | 欧美成人精品在线 | 国产福利在线免费 | wwwwwww色| 美女福利视频 | 97色资源 | 亚洲国产免费网站 | 午夜视频在线观看一区二区三区 | 国产精品久久 | 91精品视频免费看 | 日韩精品高清视频 | 成年人视频在线免费 | 久久电影网站中文字幕 | 伊人天天操 | 日韩综合第一页 | av中文字幕网址 | 视频在线精品 | 成年人在线视频观看 | 亚洲精品观看 | 狠狠色噜噜狠狠 | 国产在线国偷精品产拍免费yy | 99久久精品国产欧美主题曲 | 最近中文字幕免费观看 | 色视频网站在线 | 日韩啪啪小视频 | 福利二区视频 | 九色91在线视频 | 黄色软件大全网站 | 在线观看视频黄色 | 2019av在线视频 | 亚洲资源 | 99久久久久国产精品免费 | 国产涩涩在线观看 | 欧美日韩亚洲在线 | 欧美大片mv免费 | 黄色免费高清视频 | 欧美日韩观看 | 国产高清在线不卡 | 欧美日韩视频免费 | 亚洲电影自拍 | 国产视频高清 | www.在线观看av | 天天狠狠干 | 久久不卡免费视频 | 久久中文字幕视频 | 91精品视频播放 | 久久 精品一区 | 黄色一级在线观看 | 亚洲成人黄色 | 激情久久久久久久久久久久久久久久 | 亚洲精品午夜久久久久久久久久久 | 久久99热这里只有精品 | 91久久久久久久一区二区 | 亚洲精品视频网站在线观看 | 欧洲色吧| 免费人做人爱www的视 | 久久激情小说 | 久草视频网 | 日韩激情在线 | 国产91在| 久久久久欠精品国产毛片国产毛生 | www天天操 | 丁香网婷婷| 国内偷拍精品视频 | av再线观看| 在线视频1卡二卡三卡 | 六月激情久久 | 色综合久久久久综合体桃花网 | 色999精品| 国产精品人人做人人爽人人添 | av三级在线看 | 亚洲国产福利视频 | 人人干干人人 | 亚洲电影一区二区 | 久久99亚洲精品久久 | 午夜影院一级片 | 在线观看中文字幕视频 | 精品日本视频 | 免费视频区 | 日韩欧美在线视频一区二区三区 | 精品一区二区精品 | 狠狠干夜夜爽 | 免费福利在线视频 | 91精品国产欧美一区二区成人 | 日本在线精品视频 | 国产伦精品一区二区三区免费 | 视频 天天草 | 波多野结衣视频在线 | 日韩在线视频播放 | 免费影视大全推荐 | 久久天天躁 | 免费看一级特黄a大片 | 久草综合在线观看 | 久久久久久久久黄色 | 国产一区二区精品久久 | 久草精品视频 | 毛片1000部免费看 |