ES5數(shù)組新增的3個方法
1、forEach
- 作用:幫我們遍歷數(shù)組棱烂,每遍歷到一個值租漂,就會調(diào)用一次回調(diào),把這個值與它的下標(biāo)傳遞過去
- 語法:數(shù)組.forEach(function(v, i){ console.log('使用forEach幫我們遍歷好的值與下標(biāo)') })
- 返回值:undefined
2颊糜、 map
- 作用:可以用來代替forEach哩治,但是map可以接收回調(diào)的返回值,最終通過一組數(shù)據(jù)映射為回調(diào)返回的另外一組數(shù)據(jù)
- 語法:var mapArr = 數(shù)組.map(function(v, i){ return v * v })
- 返回值:回調(diào)所有的返回值組成的新數(shù)組
3衬鱼、 filter
- 作用:可以用來代替forEach业筏,但是還可以過濾數(shù)組中的值
- 語法:var filterArr = 數(shù)組.filter(function(v, i){ if(v % 2 ==0){ return true; } })
- 返回值:所有返回回調(diào)返回true的對應(yīng)值組成的新數(shù)組
call&apply的補(bǔ)充
- 如果不傳參 ==> this指向window
- 傳null ==> this指向window
- 傳undefined ==> this指向window
- 傳123 ==> this指向123的包裝類型對象(Number對象)
- 傳'abc' ==> this指向'abc'的包裝類型對象(String對象)
- 傳true ==> this指向true的包裝類型對象(Boolean對象)
- 傳對象 ==> this指向傳入的對象
構(gòu)造函數(shù)的返回值
- 如果構(gòu)造函數(shù)沒有return語句,那么new它鸟赫,得到一個新實(shí)例
- 如果構(gòu)造函數(shù)return了一些基本類型數(shù)據(jù)蒜胖,那么new它,得到一個新實(shí)例
- 如果構(gòu)造函數(shù)return了一個對象抛蚤,那么new它台谢,得到return的對象
嚴(yán)格模式
- ES5新增的一個特性,使用該特性可以讓js以一種新的模式運(yùn)行js腳本岁经。
- 該模式下可以強(qiáng)制我們拋棄那些不推薦不友好的寫法
- 該模式下可以讓js之前的一些設(shè)計(jì)不太合理的api表現(xiàn)的合理一些
- 該模式下可以讓js擁有一些新的特性朋沮,比如ES6/ES7規(guī)范中定義的某些語法,必須在嚴(yán)格模式下才有效
嚴(yán)格模式的分類
- 全局模式
- 在全局代碼的最上面書寫一句話'use strict';
- 使用該模式缀壤,所有的代碼都按照嚴(yán)格模式執(zhí)行
- 局部模式
- 在函數(shù)內(nèi)部的最上面書寫一句話'use strict';
- 使用該模式樊拓,只有該函數(shù)內(nèi)的代碼才會按照嚴(yán)格模式執(zhí)行
需要記住的幾條嚴(yán)格模式規(guī)則
- 定義變量必須使用var
- 函數(shù)調(diào)用模式this為undefined
- 真正實(shí)現(xiàn)了call誰this就為誰
- eval擁有了單獨(dú)的作用域
沙箱模式
- 使用某種方式纠亚,防止一些代碼對外界環(huán)境造成潛在影響,這類代碼就可以認(rèn)為是沙箱模式
- 在js中筋夏,最簡單的沙箱模式寫法蒂胞,就是使用一個自調(diào)函數(shù)把某塊代碼進(jìn)行封裝,可以防止全局變量污染
工廠模式
- 凡是調(diào)用一個函數(shù)条篷,函數(shù)返回一個對象啤誊,那么這個函數(shù)就可以認(rèn)為是一個工廠。
- 在js中拥娄,一般的工廠都是把new對象的過程進(jìn)行了一個封裝。
單例模式
- 只要讓某種類型的實(shí)例瞳筏,只能存在一個稚瘾,實(shí)現(xiàn)這種需求的代碼就是單例模式
- 在js中,JSON與Math對象就被設(shè)計(jì)為單例模式姚炕,我們不能夠創(chuàng)建第二個這種類型的對象。
觀察者模式 -- 發(fā)布訂閱模式
- 只要某事件發(fā)生后,會自動執(zhí)行預(yù)設(shè)好的回調(diào)陡厘,那么實(shí)現(xiàn)這種需求的代碼就是觀察者模式
- 觀察者模式可以認(rèn)為就是自定義事件
- 觀察者模式通常使用的場景是這樣的:某對象做了某件事灭必,其他對象做出相應(yīng)的一個響應(yīng)
bind
- ES5提供了一個新的可以改變函數(shù)this指向的新函數(shù)
- 作用:通過某函數(shù)得到一個綁定了固定this的新函數(shù),這個新函數(shù)可以是舊函數(shù)的clone版本
- 語法:var bindFn = 函數(shù).bind(this)
- 返回值:綁定了this的函數(shù)
類成員&實(shí)例成員
- 類成員
- 添加給類自己的屬性與方法
- 實(shí)例成員
- 添加給實(shí)例自己的屬性與方法
- 原型上供實(shí)例使用的屬性與方法