重拾簡書(學習大前端訓練營)

作者:酸菜牛肉 文章內(nèi)容輸出來源:拉勾教育大前端高薪訓練營課程
時隔多年蝶押,又重回簡書了,看著當年的筆記袖肥,感覺那時候還是無比青澀的咪辱,需要重新學習,大前端作為一個新的開始椎组。

ECMAScript新特性 (es2015)###

let與const 塊級作用域

let命令聲明變量油狂,類似var,但所聲明的變量只在let代碼塊有效寸癌。
var聲明的變量全局范圍內(nèi)都有效专筷;
const聲明一個只讀的常量。一旦聲明蒸苇,常量的值就不能改變磷蛹。(實際是指向內(nèi)存地址不變,const 修飾之后溪烤,對象里的屬性可以修改)

數(shù)組和對象的解構(gòu)

對象的解構(gòu)

 * 解構(gòu):快捷味咳,方便
 * 
 * 對象解構(gòu)
 */

{
  var expense = {
    type: "es6",
    amount: "45"
  };

  //1.ES5
  // var type = expense.type;
  // var amount = expense.amount;
  // console.log(type, amount); //output: es6 45

  //2.ES6
  const { type, amount, abc } = expense;
  console.log(type, amount, abc);    //output: es6 45 undefined
}

{

  var saveFiled = {
    extension: "jpg",
    name: "girl",
    size: 14040
  };

  //ES5
  function fileSammary1(file) {
    return `${file.name}.${file.extension}的總大小是${file.size};`
  }

  //ES6
  //名字不能變庇勃,位置可以亂
  function fileSammary2({ name, size, extension }) {
    return `${name}.${extension}的總大小是${size};`
  }

  console.log(fileSammary1(saveFiled)); //output: girl.jpg的總大小是14040;
  console.log(fileSammary2(saveFiled)); //output: girl.jpg的總大小是14040;
}

數(shù)組的解構(gòu)

/**
 * 解構(gòu):快捷,方便
 * 
 * 數(shù)組解構(gòu)
 */

/**
 * 基礎
 */
{
  const names = ["Henry", "Bucky", "Emily"];
  const [name1, name2, name3] = names;
  console.log(name1, name2, name3);

  //用對象接收槽驶,反數(shù)組個數(shù)
  const { length } = names;
  console.log(length); // 3

  //結(jié)合張開運算符
  const [name, ...rest1] = names;
  console.log(name);  // Henry
  console.log(rest1); //(2) ["Bucky", "Emily"]

  let [foo, [[bar], baz]] = [1, [[2], 3]];
  foo; // 1
  bar; // 2
  baz; // 3
}

/**
 * 數(shù)組中的對象
 */
{
  //對象數(shù)組
  const people = [
    { name: "Henry", age: 20 },
    { name: "Bucky", age: 25 },
    { name: "Emily", age: 30 }
  ];

  // ES5
  //讀取數(shù)據(jù)元素中的對象參數(shù)值
  {
    var age = people[0].age;
    age;      // 20
  }

  // ES6
  {
    //讀取數(shù)組的元素
    {
      const [age1, , age] = people;
      console.log(age1);  // { name: "Henry", age: 20 },
      console.log(age);   // { name: "Emily", age: 30 }
    }

    //讀取數(shù)組元素中的對象參數(shù)值
    {
      const [{ age }] = people;
      console.log(age);   // 20
    }
  }


  //數(shù)組轉(zhuǎn)化為對象
  {
    const points = [
      [4, 5], [10, 20], [0, 100]
    ];

    /**
     * 期望數(shù)據(jù)格式:
     * [
     *  {x:4,y:5},
     *  {x:10,y:20},
     *  {x:0,y:100}
     * ]
     */

     let newPoints = points.map(([x,y])=>{
       //1.傳入解構(gòu) [x,y] = [4,5]
       //2.x = 4, y = 5
       //3.return {x:x,y:y} 簡寫 return {x,y}
       return {x,y};
     })

     console.log(newPoints);
  }
}
模板字符串

在某些時候责嚷,嵌套模板是具有可配置字符串的最簡單也是更可讀的方法。 在模板中掂铐,只需在模板內(nèi)的占位符 ${ } 內(nèi)使用它們罕拂,就可以輕松地使用內(nèi)部反引號。
ES5:

var classes = 'header'
classes += (isLargeScreen() ?
   '' : item.isCollapsed ?
     ' icon-expander' : ' icon-collapser');

在ES2015中使用模板文字而沒有嵌套:

const classes = `header ${ isLargeScreen() ? '' :
    (item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`;

在ES2015的嵌套模板字面量中:

const classes = `header ${ isLargeScreen() ? '' :
 `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;
帶標簽的模板字符串

標簽函數(shù)并不一定需要返回一個字符串

function template(strings, ...keys) {
  return (function(...values) {
    var dict = values[values.length - 1] || {};
    var result = [strings[0]];
    keys.forEach(function(key, i) {
      var value = Number.isInteger(key) ? values[key] : dict[key];
      result.push(value, strings[i + 1]);
    });
    return result.join('');
  });
}

var t1Closure = template`${0}${1}${0}!`;
t1Closure('Y', 'A');  // "YAY!" 
var t2Closure = template`${0} ${'foo'}!`;
t2Closure('Hello', {foo: 'World'});  // "Hello World!"
字符串擴展方法

String.startsWith()
String.endsWith()
includes()

參數(shù)默認值

函數(shù)默認值堡纬,必須放在參數(shù)最后

function foo( key, value = "abb"){
  console.log(`${key}${value}`);
}
剩余參數(shù)

剩余參數(shù)聂受,必須放在參數(shù)最后

function foo( ...args ){
  console.log(...args);
}
foo(1, 2, 3, 4)
展開數(shù)組
arr = [1, 2, 3]
console.log(...arr) //1, 2, 3

箭頭函數(shù)

箭頭函數(shù)語法
const a = n => n+1
箭頭函數(shù)this

箭頭函數(shù)的this是函數(shù)定義的時候就綁定的; 普通函數(shù)的this指向調(diào)用對象烤镐,箭頭函數(shù)的this調(diào)用對象指向父級;箭頭函數(shù)應該是普通函數(shù)定義基礎上call()一次過后this的指向棍鳖,之后所有call的this都會指向第一個call的this炮叶。

var webName="螞蟻部落";
let func=()=>{
  console.log(this.webName);
}
func();
對面字面量
const bar = '123'
const obj = {
  foo: 123,
  bar:
[Math.random]:123 //計算屬性名
}
Object.assign

將多個源對象中的屬性復制到一個對象中()用后邊對象的屬性覆蓋第一個對象

Object.is

對象的地址進行比較

Proxy

專門為對象訪問設置代理器

const proson = {
  name: 'adf',
  age: 22
}
const personProxy = new Proxy(person, {
  get( target, property){
    return property in target? target[property] : 'default'
  }
  set( target, property, value){
    if(property === "age"){
      if(!Number.isInteger(value)){
        throw new TypeError(`${value} is new int`)
      }
    }
    target[property] = value
  }
})
console.log(person.name)
Proxy 和defineProxy區(qū)別
image.png
Reflecct

reflect內(nèi)部封裝了一系列對對象的底層操作
Reflect成員方法就是Proxy處理對象的默認實現(xiàn)
統(tǒng)一提供對象的操作api

const obj = {
  name: 'zce',
  age: 18  
}
//console.log('name' in obj)
//console.log(delete obj['age'])
//console.log(Object.keys(obj))

console.log(Reflecct.has(obj, 'name'))
console.log(Reflecct.deleteProperty(obj, age))
console.log(Reflecct.ownKeys(obj))
image.png
Promise

之后會 單獨理解

Symbol

會創(chuàng)建出唯一的數(shù)據(jù)類型,可以作為對象的私有屬性名渡处,防止對象的屬性值北訪問

const a = Symbol()
const b = Symbol()
console.log(a === b) //false

console.log( Symbol.for("foo") ===  Symbol.for("foo")) //true    讓Symbol 和字符串形成一一對應關系
迭代器
const todos = {
  life: ["吃飯"镜悉, "睡覺', "打豆豆"]医瘫,
  learn: ['語文'侣肄, '數(shù)學','外語']醇份,
  work: ['喝茶']
   each: function (callback) {
      const all = [].concat(this.life, this.learn, this.work)
      for (const item of all){
        callback(item)
      }  
  }
    [Symbol.iterator]:function(){
        const all = [...this.life, ...this.learn, this.work]
        let index = 0
         return {
            next function() {
                return{
                    value: all[index],
                    done: index++ >=all.length
                 }
          }
      }
    }
}s
生成器

避免異步編程函數(shù)回調(diào)嵌套過深

function * foo(){
  console.log('111')
  yeild 100
console.log('222')
  yeild 200
console.log('333')
  yeild 300
}
const result = foo()
console.log(result.next())
console.log(result.next())
console.log(result.next())

作者:酸菜牛肉 文章內(nèi)容輸出來源:拉勾教育大前端高薪訓練營課程

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稼锅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子僚纷,更是在濱河造成了極大的恐慌矩距,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怖竭,死亡現(xiàn)場離奇詭異锥债,居然都是意外死亡,警方通過查閱死者的電腦和手機痊臭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門哮肚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人广匙,你說我怎么就攤上這事允趟。” “怎么了艇潭?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵拼窥,是天一觀的道長戏蔑。 經(jīng)常有香客問我,道長鲁纠,這世上最難降的妖魔是什么总棵? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮改含,結(jié)果婚禮上情龄,老公的妹妹穿的比我還像新娘。我一直安慰自己捍壤,他們只是感情好骤视,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹃觉,像睡著了一般专酗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盗扇,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天祷肯,我揣著相機與錄音,去河邊找鬼疗隶。 笑死佑笋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的斑鼻。 我是一名探鬼主播蒋纬,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坚弱!你這毒婦竟也來了蜀备?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤史汗,失蹤者是張志新(化名)和其女友劉穎琼掠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體停撞,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瓷蛙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了戈毒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰猬。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖埋市,靈堂內(nèi)的尸體忽然破棺而出冠桃,到底是詐尸還是另有隱情,我是刑警寧澤道宅,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布食听,位于F島的核電站胸蛛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏樱报。R本人自食惡果不足惜葬项,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迹蛤。 院中可真熱鬧民珍,春花似錦、人聲如沸盗飒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逆趣。三九已至蝶溶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汗贫,已是汗流浹背身坐。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留落包,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓摊唇,卻偏偏與公主長得像咐蝇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巷查,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348