導航:首頁 > 編程語言 > js原型添加靜態方法

js原型添加靜態方法

發布時間:2024-09-07 22:39:50

㈠ dayjs源碼解析(二):Dayjs 類

上篇文章講述了dayjs的基礎知識、locale、constant和utils,本文將繼續深入解析dayjs的核心部分——src/index.js中的Dayjs類。

src/index.js文件結構清晰,按照以下步驟構建:

然而,這里存在兩個疑問,可能是為了縮減代碼體積,由@iamkun提出。

現在開始正式分析代碼。

locale相關全局定義

首先默認導入了locale/en.js英文的locale,然後使用L存儲當前使用的locale名字,使用Ls(locale Storage)存儲locale對象。

工具補充

定義了一個工具方法parseLocale。這個方法處理以下幾種情況:

然後將定義好的parseLocale方法補充到Utils中。

相關方法

在Dayjs類中,關於locale的方法有兩個,實例私有方法$locale用來返回當前使用的locale對象;實例方法locale本質上就是調用了parseLocale方法,但最後返回的是新的改變了locale的Dayjs實例。

注意:在dayjs中,許多操作都使用clone()方法來返回新的Dayjs實例,這也是這個庫的優點之一。

最後同樣將parseLocale方法補充到Dayjs類的靜態方法中。

補充Utils

上一節和前文中已經分析了一些Util工具,這里將其補充完整:

注意:這些工具方法沒有統一定義在utils.js文件中的原因是用到了index.js作用域中的一些變數。

需要特別關注的是wrapper方法,在Dayjs類中大量應用了該方法,其實是通過date和原實例封裝了一個新實例,新實例和原實例的主要區別就是關聯的時間不同。

Dayjs類

Dayjs類是整個dayjs庫的核心,可以給其定義的實例方法分類,也可以查看官網的文檔分類。

解析都寫在了代碼的注釋里:

原型鏈

通常來說,定義在實例中的方法應該在原型鏈上,但有幾個與時間有關的setter/getter方法相似,所以單獨將原型鏈寫在了上面。

這幾個方法都是不傳參數時為getter,傳參數時為setter。

靜態屬性

還有一些方法和屬性掛在了dayjs函數對象上,最核心的是載入插件和載入locale的方法,幾個方法的用法都能在官方文檔中找到。

如果對dayjs函數對象、Dayjs類和原型的關系感到困惑,可以參考下圖,最後形成的關系如下圖所示:

總結

如果不看插件部分,dayjs庫的核心已經解析完成,看一下默認生成dayjs實例長什麼樣子:

實例本身的屬性是一些與時間相關的屬性,各種操作方法都在原型__proto__上。

本節結束,下一節將開始解析dayjs的插件。

㈡ 如何實現JS的靜態變數效果,多頁面引用一個JS,共享變數或對象值

這樣做法其實是有兩個不同的comm.js。a界面引用的comm.js,與b界面引用的comm.js雖然是相同的文件,但是在兩個頁面是不會共享內存的把。

㈢ nodejs通過函數名進行靜態方法調用出現類型錯誤,為什麼

在JS里,一切都是對象,所謂的class並不是傳統語言上的定義或者聲明,而是直內接創建出來了(容已分配內存)。
Myfunc是個構造函數(constructor),所有在構造函數中創建的變數和方法都是prototype的。
因此
function Myfunc(){
this.myMethod=function(){
}
}

function Myfunc(){
}
Myfunc.prototype.myMethod=function(){
}
是等效的。
所以調用前必須new一下。
而下面這段是可以的,因為直接給Myfunc對象加了一個方法myMethod。恩只是寫法和用法像靜態而已。
function Myfunc(){
}
Myfunc.myMethod=function(){
}

閱讀全文

與js原型添加靜態方法相關的資料

熱點內容
怎樣將一個cad文件包圖紙兼容 瀏覽:898
論文有什麼好的網站 瀏覽:581
jdk7javadoc 瀏覽:687
編程小游戲是如何設計的 瀏覽:913
網路安全風險案例 瀏覽:46
司法考試哪個網站好 瀏覽:469
android搜索功能代碼 瀏覽:437
文件名如何沒有文字 瀏覽:601
吃雞地圖資源包文件路徑 瀏覽:267
cad文件轉移手機 瀏覽:733
指定區域網內文件delphi 瀏覽:638
蘋果5s充電介面維修 瀏覽:913
建行app怎麼老是信息填寫錯誤 瀏覽:832
羅技g903切換配置文件 瀏覽:649
游戲的數據在哪個英文文件夾 瀏覽:435
編程一般學什麼專業課 瀏覽:394
不屬於資料庫系統的主要組成部分 瀏覽:797
jdl是什麼網路詞 瀏覽:247
優酷的緩存視頻文件夾 瀏覽:842
jsp頁面獲取地址欄參數 瀏覽:893

友情鏈接