ES(學習筆記)

理解ES

  1. 全稱: ECMAScript
  2. js語言的規(guī)范
  3. 我們用的js是它的實現(xiàn)
  4. js的組成
  • ECMAScript(js基礎(chǔ))
  • 擴展-->瀏覽器端
    • BOM
    • DOM
  • 擴展-->服務(wù)器端
    • Node.js

ES5

  1. 嚴格模式
  • 運行模式: 正常(混雜)模式與嚴格模式
  • 應(yīng)用上嚴格式: 'strict mode';
  • 作用:
    • 使得Javascript在更嚴格的條件下運行
    • 消除Javascript語法的一些不合理做鹰、不嚴謹之處,減少一些怪異行為
    • 消除代碼運行的一些不安全之處,保證代碼運行的安全
    • 需要記住的幾個變化
      • 聲明定義變量必須用var
      • 禁止自定義的函數(shù)中的this關(guān)鍵字指向全局對象
      • 創(chuàng)建eval作用域, 更安全
  1. JSON對象
  • 作用: 用于在json對象/數(shù)組與js對象/數(shù)組相互轉(zhuǎn)換
  • JSON.stringify(obj/arr)
    js對象(數(shù)組)轉(zhuǎn)換為json對象(數(shù)組)
  • JSON.parse(json)
    json對象(數(shù)組)轉(zhuǎn)換為js對象(數(shù)組)
  1. Object擴展
  • Object.create(prototype[, descriptors]) : 創(chuàng)建一個新的對象
    • 以指定對象為原型創(chuàng)建新的對象
    • 指定新的屬性, 并對屬性進行描述
      • value : 指定值
      • writable : 標識當前屬性值是否是可修改的, 默認為true
      • get方法 : 用來得到當前屬性值的回調(diào)函數(shù)
      • set方法 : 用來監(jiān)視當前屬性值變化的回調(diào)函數(shù)
  • Object.defineProperties(object, descriptors) : 為指定對象定義擴展多個屬性
  1. Array擴展
  • Array.prototype.indexOf(value) : 得到值在數(shù)組中的第一個下標
  • Array.prototype.lastIndexOf(value) : 得到值在數(shù)組中的最后一個下標
  • Array.prototype.forEach(function(item, index){}) : 遍歷數(shù)組
  • Array.prototype.map(function(item, index){}) : 遍歷數(shù)組返回一個新的數(shù)組
  • Array.prototype.filter(function(item, index){}) : 遍歷過濾出一個子數(shù)組
  1. Function擴展
  • Function.prototype.bind(obj)
    • 將函數(shù)內(nèi)的this綁定為obj, 并將函數(shù)返回
  • 面試題: 區(qū)別bind()與call()和apply()?
    • fn.bind(obj) : 指定函數(shù)中的this, 并返回函數(shù)
    • fn.call(obj) : 指定函數(shù)中的this,并調(diào)用函數(shù)
  1. Date擴展
  • Date.now() : 得到當前時間值

ES6

  1. 2個新的關(guān)鍵字
  • let/const
  • 塊作用域
  • 沒有變量提升
  • 不能重復定義
  • 值不可變
  1. 變量的解構(gòu)賦值
  • 將包含多個數(shù)據(jù)的對象(數(shù)組)一次賦值給多個變量
  • 數(shù)據(jù)源: 對象/數(shù)組
  • 目標: {a, b}/[a, b]
  1. 各種數(shù)據(jù)類型的擴展
  • 字符串

    • 模板字符串
      • 作用: 簡化字符串的拼接
      • 模板字符串必須用``
      • 變化的部分使用${xxx}定義
    • contains(str) : 判斷是否包含指定的字符串
    • startsWith(str) : 判斷是否以指定字符串開頭
    • endsWith(str) : 判斷是否以指定字符串結(jié)尾
    • repeat(count) : 重復指定次數(shù)
  • 對象

    • 簡化的對象寫法
      let name = 'Tom';
      let age = 12;
      let person = {
          name,
          age,
          setName (name) {
              this.name = name;
          }
      };
      
    • Object.assign(target, source1, source2..) : 將源對象的屬性復制到目標對象上
    • Object.is(v1, v2) : 判斷2個數(shù)據(jù)是否完全相等
    • proto屬性 : 隱式原型屬性
  • 數(shù)組

    • Array.from(v) : 將偽數(shù)組對象或可遍歷對象轉(zhuǎn)換為真數(shù)組
    • Array.of(v1, v2, v3) : 將一系列值轉(zhuǎn)換成數(shù)組
    • find(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素
    • findIndex(function(value, index, arr){return true}) : 找出第一個滿足條件返回true的元素下標
  • 函數(shù)

    • 箭頭函數(shù)
      • 用來定義匿名函數(shù)
      • 基本語法:
        • 沒有參數(shù): () => console.log('xxxx')
        • 一個參數(shù): i => i+2
        • 大于一個參數(shù): (i,j) => i+j
        • 函數(shù)體不用大括號: 默認返回結(jié)果
        • 函數(shù)體如果有多個語句, 需要用{}包圍
      • 使用場景: 多用來定義回調(diào)函數(shù)
    • 形參的默認值
      • 定義形參時指定其默認的值
    • rest(可變)參數(shù)
      • 通過形參左側(cè)的...來表達, 取代arguments的使用
    • 擴展運算符(...)
      • 可以分解出數(shù)組或?qū)ο笾械臄?shù)據(jù)
  1. set/Map容器結(jié)構(gòu)
  • 容器: 能保存多個數(shù)據(jù)的對象, 同時必須具備操作內(nèi)部數(shù)據(jù)的方法
  • 任意對象都可以作為容器使用, 但有的對象不太適合作為容器使用(如函數(shù))
  • Set的特點: 保存多個value, value是不重復 ====>數(shù)組元素去重
  • Map的特點: 保存多個key--value, key是不重復, value是可以重復的
  • API
    • Set()/Set(arr) //arr是一維數(shù)組
    • add(value)
    • delete(value)
    • clear();
    • has(value)
    • size
    • Map()/Map(arr) //arr是二維數(shù)組
    • set(key, value)
    • delete(key)
    • clear()
    • has(key)
    • size
  1. for--of循環(huán)
  • 可以遍歷任何容器
  • 數(shù)組
  • 對象
  • 偽/類對象
  • 字符串
  • 可迭代的對象
  1. Promise
  • 解決回調(diào)地獄(回調(diào)函數(shù)的層層嵌套, 編碼是不斷向右擴展, 閱讀性很差)
  • 能以同步編碼的方式實現(xiàn)異步調(diào)用
  • 在es6之前原生的js中是沒這種實現(xiàn)的, 一些第三方框架(jQuery)實現(xiàn)了promise
  • ES6中定義實現(xiàn)API:
    // 1. 創(chuàng)建promise對象
    var promise = new Promise(function(resolve, reject){ 
      // 做異步的操作 
      if(成功) { // 調(diào)用成功的回調(diào)
        resolve(result); 
      } else { // 調(diào)用失敗的回調(diào)
        reject(errorMsg); 
      } 
    }) 
    // 2. 調(diào)用promise對象的then()
    promise.then(function(
      result => console.log(result), 
      errorMsg => alert(errorMsg)
    ))
    
  1. class類
  • 用 class 定義一類
  • 用 constructor() 定義構(gòu)造方法(相當于構(gòu)造函數(shù))
  • 一般方法: xxx () {}
  • 用extends來定義子類
  • 用super()來父類的構(gòu)造方法
  • 子類方法自定義: 將從父類中繼承來的方法重新實現(xiàn)一遍
  • js中沒有方法重載(方法名相同, 但參數(shù)不同)的語法
  1. 模塊化(后面講)

ES7

  • 指數(shù)運算符: **
  • Array.prototype.includes(value) : 判斷數(shù)組中是否包含指定value
  • 區(qū)別方法的2種稱謂
    • 靜態(tài)(工具)方法
      • Fun.xxx = function(){}
    • 實例方法
      • 所有實例對象 : Fun.prototype.xxx = function(){} //xxx針對Fun的所有實例對象
      • 某個實例對象 : fun.xxx = function(){} //xxx只是針對fun對象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稠氮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玷犹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洒疚,死亡現(xiàn)場離奇詭異歹颓,居然都是意外死亡坯屿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門晴股,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愿伴,“玉大人,你說我怎么就攤上這事电湘「艚冢” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵寂呛,是天一觀的道長怎诫。 經(jīng)常有香客問我,道長贷痪,這世上最難降的妖魔是什么幻妓? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮劫拢,結(jié)果婚禮上肉津,老公的妹妹穿的比我還像新娘。我一直安慰自己舱沧,他們只是感情好妹沙,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熟吏,像睡著了一般距糖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牵寺,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天悍引,我揣著相機與錄音,去河邊找鬼帽氓。 笑死趣斤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的黎休。 我是一名探鬼主播浓领,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奋渔!你這毒婦竟也來了镊逝?” 一聲冷哼從身側(cè)響起壮啊,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫉鲸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歹啼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玄渗,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡座菠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藤树。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴滴。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岁钓,靈堂內(nèi)的尸體忽然破棺而出升略,到底是詐尸還是另有隱情,我是刑警寧澤屡限,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布品嚣,位于F島的核電站,受9級特大地震影響钧大,放射性物質(zhì)發(fā)生泄漏翰撑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一啊央、第九天 我趴在偏房一處隱蔽的房頂上張望眶诈。 院中可真熱鬧,春花似錦瓜饥、人聲如沸逝撬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球拦。三九已至,卻和暖如春帐我,著一層夾襖步出監(jiān)牢的瞬間坎炼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工拦键, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谣光,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓芬为,卻偏偏與公主長得像萄金,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子媚朦,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容