你在閱讀 JS 開源專案原始碼的時候見過哪些高階寫法?

時間 2021-05-07 05:09:00

1樓:前端361

webpack原始碼中鉤子初始化時傳入的引數shouldEmit

:new

SyncBailHook

(["compilation"

]),先將引數儲存,呼叫時根據傳入的引數名呼叫constructor

(args

)指定了鉤子對應的外掛程式名稱,設計巧妙

2樓:FanT

// 定義乙個有幾十天的物件

for (let i=0; i<30; i++) , res, `]: i })}

3樓:不願

switch (true) {

case statement1:

do something

break;

case statement2:

do something

break;

case statement3:

do something

break;

4樓:我可以

可能就是 Vue 原始碼了吧

定義了乙個空殼子,然後依次經過各個 mixin 往原型鏈上面掛載方法

邏輯劃分的很清楚,讓人很清楚作者的意圖

5樓:Shulamith

Dan Abramov 最近寫 Algebraic Effects 的文章裡提到的

function

MovieDetails

()當 movieCache 裡沒有對應 id 並且正在讀取的時候, throw 乙個讀 movie 的 promise, MovieDetails 的呼叫者在這個 promise resolve 之後再呼叫 MovieDetails, 此時 cache 裡一定有這個 id

6樓:Mi.Hack

在一行新增雙向關聯的資料:

普通青年的寫法:

letobj

={};

obj[

"key"]=

"value"

;obj

["value"]=

"key"

;// obj=

文藝青年的寫法:

letlover

={};

lover

[lover

["me"]=

"you"]=

"me"

// 我呀,一直在你身邊。

// lover=

7樓:汙師葵

批量呼叫乙個帶兩個引數的function:[[1,1],[

3,1],

[5,1

],[1,

9],[3

,9],[

5,9]].

forEach

(arr

=>foo(...

arr));

利用賦值表示式返回值的特性同時完成賦值和進一步操作:

letobj1

=console

.log

(obj1

.str

='test'

);讓普通Object可以使用forof遍歷屬性:

Object

.prototype

[Symbol

.iterator]=

function();

不定期補充...

8樓:敖玄

redux 的 compose 函式

當時看到這個 commit,就覺得漲姿勢了Simplify composer · reduxjs/redux@44dfc39

9樓:brambles

不就是奇技淫巧嗎……我手上有大把……

type

Next

=(

ctx: CTX

)=>void

type

Cont

=(

ctx: CTX

,next: Next

)

=>void

export

function

continuation

{}>(...

funcs: Cont

)

:Cont

type

Cons

T1extends

Cons

any>

|never

>=type

Left

Cons

any>

>=T[0]type

Right

Cons

any>

>=T[1]type

Head

Cons

any>

>=Left

type

IsEnd

Cons

any>

>=Textends

Cons

never

>?true

:false

type

Tail

Cons

any>

>=[IsEnd

extends

true

?'end'

:'more'

]typeA=

Tail

<0,Cons

<1,Cons

<2,never

>>>>class

Middleware

use(...

middlewares

)handle

(ctx)}

bramblex/react-hooks

bramblex/jsjs

bramblex/napa-loader

bramblex/io-request

bramblex/blx-fsm

請問有什麼適合學完c的開源專案學習閱讀嗎?

愛吃茄子 很多人說對linux有興趣只是因為他只知道linux,並不是真的對linux有興趣,得多學學多看看才知道自己到底對什麼有興趣。不知道你是不是這種情況反正我以前就是這樣的。我大scala不香嗎 知否知否 Linux常用命令。關鍵要學會看man手冊,如此遇到新命令可快速掌握用法。man手冊有固...

對於阿波羅專案在Github開源後被部分國人以極端民族主義情緒惡意灌水,你有什麼想說的?

蕭葉軒 這專案發出來,就不可能提正常的issue。灌水在全世界都存在,英文灌水的也不少。極端民族主義在github裡還是挺少見的,大部分人都是湊熱鬧,很正常。 你之所以會覺得都是中中國人在灌水,是因為你英語太爛。多學些英文俚語,你會發現,誒,原來洋大人也喜歡鬼扯 到時候你可能會來知乎問,問什麼同樣是...

在閱讀的時候你是更傾向於閱讀名家名篇還是將一位作家的所有作品集中在一段時間閱讀呢?為什麼?

會看很多其他人的書,挑著看,但如果寫作時,會把最符合自己性格 文風還有表達的思想一樣的作家全看完,不斷揣摩,就像跟著一位老師。 一碗粥 習慣性的在一段時間,把作者的所有書找出來看,因為這樣覺得會更加了解作者的初衷,想明白作者是在什麼立場寫出來的語句,更好地體會這本書。但是,也要看其他的,以免有點視覺...