執(zhí)行環(huán)境
- 常見(jiàn)的js引擎載體有、web瀏覽器、nodeJs、移動(dòng)端vebView、小程序
- 在不同的執(zhí)行環(huán)境中都有自己的js引擎,不同js引擎提供的執(zhí)行環(huán)境,最主要的區(qū)別在與宿主對(duì)象
- 在現(xiàn)代瀏覽器中,有了w3c組織的規(guī)范,各個(gè)廠商對(duì)于瀏覽器js引擎中的宿主對(duì)象、本地對(duì)象以及瀏覽器css引擎相關(guān)的實(shí)現(xiàn)差異越來(lái)越小,這有助于web技術(shù)的長(zhǎng)遠(yuǎn)發(fā)展
- js語(yǔ)言體系下的內(nèi)置對(duì)象實(shí)現(xiàn),有EcmaScript規(guī)范作為支持,各個(gè)廠商的實(shí)現(xiàn)也逐漸統(tǒng)一,使得的現(xiàn)代瀏覽器下的web開(kāi)發(fā)越來(lái)越簡(jiǎn)單
- 我們?nèi)粘i_(kāi)發(fā)中在寫(xiě)js代碼時(shí),要注重的就是書(shū)寫(xiě)的代碼要在哪個(gè)環(huán)境下執(zhí)行,所用到的宿主對(duì)象及本地對(duì)象在執(zhí)行環(huán)境下是否存在,是否有行為上的差異
宿主對(duì)象
- 宿主對(duì)象是不同js引擎內(nèi)部的平臺(tái)相關(guān)的實(shí)現(xiàn)
- 比如web瀏覽器,它的宿主對(duì)象有、window、document、location、navigator、history、localStorage、sessionStorage等···
- 不同平臺(tái)的js引擎的宿主對(duì)象,數(shù)量、命名、功能各不相同,沒(méi)有可比性
- 相同平臺(tái)不同廠商的js引擎對(duì)宿主對(duì)象的實(shí)現(xiàn)也有很大的差異,比如chrom、IE、firefox、safari、open、這幾大主流瀏覽器的宿主對(duì)象都存在或多或少的差異
本地對(duì)象
- 本地對(duì)象是js引擎內(nèi)部的js語(yǔ)言相關(guān)的實(shí)現(xiàn)
- 比如web瀏覽器,它的內(nèi)置對(duì)象有、Date、RegExp、Error、Math、Json、Url、setTimeout、setinteval、parseInt、parseFloat等···
- 不同平臺(tái)的js引擎的內(nèi)置對(duì)象實(shí)現(xiàn)與行為基本一致,存在細(xì)微差別
內(nèi)置對(duì)象
- 內(nèi)置對(duì)象是js語(yǔ)言規(guī)范體系內(nèi)實(shí)現(xiàn)
- 不同平臺(tái)、不同廠商都要參照EcmaScript規(guī)范進(jìn)行實(shí)現(xiàn),雖然實(shí)現(xiàn)可能不同但行為基本一致
- js內(nèi)置7種數(shù)據(jù)類型,特殊類型、null、undefined,基礎(chǔ)類型、string、number、boolean、symbol,和引用類型
- 引用類型包括 Object、Function、Array、Set、Map、Promise、Proxy、Iterator、提案中的Decorator(裝飾器);