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

熱點內容
iphone鏈接 瀏覽:110
9元編程課是什麼 瀏覽:436
cad為什麼不能輸入stl文件 瀏覽:78
編程與外語哪個更好就業 瀏覽:299
為什麼程序會跑飛 瀏覽:659
matlab中的m文件是什麼 瀏覽:226
excel批量保存pdf文件 瀏覽:963
win10文件夾死機動不了 瀏覽:411
ps打開多頁pdf文件 瀏覽:901
資料庫統計某一欄位值出現次數 瀏覽:705
學編程需要哪些方面的能力 瀏覽:896
在word2003表格中插入一行 瀏覽:606
怎麼把拍照取字的文件轉成pdf 瀏覽:838
小米穿戴app哪裡更換表盤 瀏覽:911
滿足該條件更改文件內容的代碼 瀏覽:503
xp系統怎麼卸載win10系統文件 瀏覽:709
華為手機雙系統app怎麼轉 瀏覽:317
u盤插上pc自動跳出文件夾 瀏覽:232
機密文件寫在哪裡 瀏覽:480
qq主題免費使用女孩 瀏覽:342

友情鏈接