導航:首頁 > 編程語言 > 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原型添加靜態方法相關的資料

熱點內容
陝西回收貼片機如何編程 瀏覽:948
以前鮑魚網站里的小說怎麼沒了 瀏覽:267
matlab程序如何調試 瀏覽:915
ps工程文件怎麼發 瀏覽:95
word文件如何批量插入蓋章 瀏覽:548
jscheckbox 瀏覽:338
pics規則文件 瀏覽:644
如何從數據中找出問題和機會 瀏覽:668
寫作投稿在哪個網站好 瀏覽:895
絕代雙驕版本 瀏覽:380
手機app在哪裡找的對象靠譜嗎 瀏覽:919
win10文件默認顯示ck方式 瀏覽:829
如何更改桌面文件圖標 瀏覽:418
word2010如何去掉背景 瀏覽:632
adp文件如何打開 瀏覽:531
ug編程怎麼導出零件 瀏覽:586
asp在線文件管理系統 瀏覽:468
tks文件如何分解 瀏覽:132
java7tmd32位 瀏覽:49
網路公司關鍵詞 瀏覽:925

友情鏈接