7.構(gòu)造函數(shù)的返回值、 工廠模式、 觀察者模式、 單例模式

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的補充

  • 如果不傳參 ==> 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它,得到一個新實例
  • 如果構(gòu)造函數(shù)return了一些基本類型數(shù)據(jù),那么new它,得到一個新實例
  • 如果構(gòu)造函數(shù)return了一個對象,那么new它,得到return的對象

嚴格模式

  • ES5新增的一個特性,使用該特性可以讓js以一種新的模式運行js腳本。
  • 該模式下可以強制我們拋棄那些不推薦不友好的寫法
  • 該模式下可以讓js之前的一些設(shè)計不太合理的api表現(xiàn)的合理一些
  • 該模式下可以讓js擁有一些新的特性,比如ES6/ES7規(guī)范中定義的某些語法,必須在嚴格模式下才有效

嚴格模式的分類

  • 全局模式
    • 在全局代碼的最上面書寫一句話'use strict';
    • 使用該模式,所有的代碼都按照嚴格模式執(zhí)行
  • 局部模式
    • 在函數(shù)內(nèi)部的最上面書寫一句話'use strict';
    • 使用該模式,只有該函數(shù)內(nèi)的代碼才會按照嚴格模式執(zhí)行

需要記住的幾條嚴格模式規(guī)則

  • 定義變量必須使用var
  • 函數(shù)調(diào)用模式this為undefined
  • 真正實現(xiàn)了call誰this就為誰
  • eval擁有了單獨的作用域

沙箱模式

  • 使用某種方式,防止一些代碼對外界環(huán)境造成潛在影響,這類代碼就可以認為是沙箱模式
  • 在js中,最簡單的沙箱模式寫法,就是使用一個自調(diào)函數(shù)把某塊代碼進行封裝,可以防止全局變量污染

工廠模式

  • 凡是調(diào)用一個函數(shù),函數(shù)返回一個對象,那么這個函數(shù)就可以認為是一個工廠。
  • 在js中,一般的工廠都是把new對象的過程進行了一個封裝。

單例模式

  • 只要讓某種類型的實例,只能存在一個,實現(xiàn)這種需求的代碼就是單例模式
  • 在js中,JSON與Math對象就被設(shè)計為單例模式,我們不能夠創(chuàng)建第二個這種類型的對象。

觀察者模式 -- 發(fā)布訂閱模式

  • 只要某事件發(fā)生后,會自動執(zhí)行預(yù)設(shè)好的回調(diào),那么實現(xiàn)這種需求的代碼就是觀察者模式
  • 觀察者模式可以認為就是自定義事件
  • 觀察者模式通常使用的場景是這樣的:某對象做了某件事,其他對象做出相應(yīng)的一個響應(yīng)

bind

  • ES5提供了一個新的可以改變函數(shù)this指向的新函數(shù)
  • 作用:通過某函數(shù)得到一個綁定了固定this的新函數(shù),這個新函數(shù)可以是舊函數(shù)的clone版本
  • 語法:var bindFn = 函數(shù).bind(this)
  • 返回值:綁定了this的函數(shù)

類成員&實例成員

  • 類成員
    • 添加給類自己的屬性與方法
  • 實例成員
    • 添加給實例自己的屬性與方法
    • 原型上供實例使用的屬性與方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,665評論 0 4
  • 從什么都沒有的地方,到什么都沒有的地方。 走馬說,她想回家了。她說,帝都這座城,她再也不想來了。 我認識她的時候,...
    林斯野閱讀 1,766評論 0 0
  • 去做你想做的 趁陽光正好 不浪費時間 不揮霍時光 不沉迷過去 不恐懼未來
    月缺不美卻詩意閱讀 176評論 0 1
  • “三月賞櫻,唯有武大”,如果你還不知道三月該去哪兒,那就來武漢赴一場浪漫的櫻花之約吧。行走在武大的校園內(nèi),陽光傾瀉...
    好吃的呆獸閱讀 332評論 0 1

友情鏈接更多精彩內(nèi)容