ECMAScript理解
1. 它是一種由ECMA組織(前身為歐洲計算機制造商協(xié)會)制定和發(fā)布的腳本語言規(guī)范
2. 而我們學(xué)的 JavaScript 是ECMA的實現(xiàn),但術(shù)語ECMAScript和JavaScript平時表達同一個意思
3. JS包含三個部分:
1). ECMAScript(核心)
2). 擴展==>瀏覽器端
* BOM(瀏覽器對象模型)
* DOM(文檔對象模型)
3). 擴展==>服務(wù)器端
* Node
4. ES的幾個重要版本
* ES5 : 09年發(fā)布
* ES6(ES2015) : 15年發(fā)布, 也稱為ECMA2015
* ES7(ES2016) : 16年發(fā)布, 也稱為ECMA2016 (變化不大)
1. 理解:
? * 除了正常運行模式(混雜模式)瓮栗,ES5添加了第二種運行模式:"嚴格模式"(strict mode)削罩。
? * 顧名思義瞄勾,這種模式使得Javascript在更嚴格的語法條件下運行
2.? 目的/作用
* 消除Javascript語法的一些不合理、不嚴謹之處弥激,減少一些怪異行為
* 消除代碼運行的一些不安全之處进陡,為代碼的安全運行保駕護航
* 為未來新版本的Javascript做好鋪墊
3. 使用
? * 在全局或函數(shù)的第一條語句定義為: 'use strict';
? * 如果瀏覽器不支持, 只解析為一條簡單的語句, 沒有任何副作用
4. 語法和行為改變
* 必須用var聲明變量
* 禁止自定義的函數(shù)中的this指向window
* 創(chuàng)建eval作用域
* 對象不能有重名的屬性
1. JSON.stringify(obj/arr)
? * js對象(數(shù)組)轉(zhuǎn)換為json對象(數(shù)組)
2. JSON.parse(json)
? * json對象(數(shù)組)轉(zhuǎn)換為js對象(數(shù)組)
ES5給Object擴展了一些靜態(tài)方法, 常用的2個:
1. Object.create(prototype, [descriptors])
? * 作用: 以指定對象為原型創(chuàng)建新的對象
? * 為新的對象指定新的屬性, 并對屬性進行描述
? ? - value : 指定值
? ? - writable : 標識當(dāng)前屬性值是否是可修改的, 默認為false
? ? - configurable: 標識當(dāng)前屬性是否可以被刪除 默認為false
? ? - enumerable: 標識當(dāng)前屬性是否能用for in 枚舉 默認為false
2. Object.defineProperties(object, descriptors)
? * 作用: 為指定對象定義擴展多個屬性
? ? * get :用來獲取當(dāng)前屬性值得回調(diào)函數(shù)
? ? * set :修改當(dāng)前屬性值得觸發(fā)的回調(diào)函數(shù),并且實參即為修改后的值
? * 存取器屬性:setter,getter一個用來存值秆撮,一個用來取值
get: function(){//獲取擴展屬性的值四濒,在獲取擴展屬性值的時候get方法自動調(diào)用
set: function(data){//監(jiān)聽擴展屬性,當(dāng)擴展屬性發(fā)生變化的時候职辨,會自動調(diào)用盗蟆,自動調(diào)用后會將變化的值作為實參注入到set函數(shù)
1. Array.prototype.indexOf(value) : 得到值在數(shù)組中的第一個下標
2. Array.prototype.lastIndexOf(value) : 得到值在數(shù)組中的最后一個下標
3. Array.prototype.forEach(function(item, index){}) : 遍歷數(shù)組
4. Array.prototype.map(function(item, index){}) : 遍歷數(shù)組返回一個新的數(shù)組,返回加工之后的值
5. Array.prototype.filter(function(item, index){}) : 遍歷過濾出一個新的子數(shù)組舒裤, 返回條件為true的值
1. 作用:
? * 與var類似, 用于聲明一個變量
2. 特點:
? * 在塊作用域內(nèi)有效
? * 不能重復(fù)聲明
? * 不會預(yù)處理, 不存在變量提升
3. 應(yīng)用:
? * 循環(huán)遍歷加監(jiān)聽
? * 使用let取代var是趨勢
1. 作用:
? * 定義一個常量
2. 特點:
? * 不能修改
? * 其它特點同let
3. 應(yīng)用:
? * 保存不用改變的數(shù)據(jù)
變量的解構(gòu)賦值
1. 理解:
? * 從對象或數(shù)組中提取數(shù)據(jù), 并賦值給變量(多個)
2. 對象的解構(gòu)賦值
? let {n, a} = {n:'tom', a:12}
3. 數(shù)組的解構(gòu)賦值
? let [a,b] = [1, 'hello'];
4. 用途
? * 給多個形參賦值
1. 模板字符串 : 簡化字符串的拼接
? * 模板字符串必須用 `` 包含
? * 變化的部分使用${xxx}定義