久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 《ES6標(biāo)準(zhǔn)入門》中關(guān)于修飾器的疑問

瀏覽:146日期:2023-04-19 14:33:38

問題描述

修飾器對類的行為的改變,是代碼編譯時發(fā)生的,而不是在運(yùn)行時。這意味著,修飾器能在編譯階段運(yùn)行代碼。也就是說,修飾器本質(zhì)就是編譯時執(zhí)行的函數(shù)。

有以下幾個問題:

上面引用中說到:修飾器對類的行為的改變,是代碼編譯時發(fā)生的,而不是在運(yùn)行時,這句中的編譯時、運(yùn)行時、發(fā)生分別是什么意思?

修飾器本質(zhì)就是編譯時執(zhí)行的函數(shù),這里的執(zhí)行和問題一中的發(fā)生是一個意思嗎?

修飾器一般用在哪些地方?

書上的解釋看的比較模糊,麻煩大神細(xì)細(xì)解說,非常感謝!

問題解答

回答1:

編譯時,可以大致理解為,在代碼開始運(yùn)行之前,JS引擎將代碼轉(zhuǎn)化成機(jī)器可以運(yùn)行的操作的時候。也就是說,這個過程無法在運(yùn)行時候加以干涉的,因?yàn)樗陂_始運(yùn)行之前就已經(jīng)完成了。

而運(yùn)行時,則是指你代碼編譯以后機(jī)器可以運(yùn)行的操作開始運(yùn)行時,也就是你寫的那些東西,從機(jī)器操作變成了你能實(shí)際在電腦上看到的東西的時候。

至于發(fā)生,并沒有特殊含義,就是指這些改變是在JS引擎將代碼轉(zhuǎn)化為機(jī)器操作過程中完成的。

執(zhí)行和發(fā)生,大致可以認(rèn)為是因和果的關(guān)系。改變,一般搭配的動詞是“發(fā)生”,函數(shù),一般搭配的詞是“執(zhí)行”。發(fā)生強(qiáng)調(diào)的是前后狀態(tài)的對比,也就是說,因?yàn)榘l(fā)生了某件事,導(dǎo)致之后和之前不同了。而執(zhí)行則側(cè)重過程,執(zhí)行一個操作,也就是將操作里每個步驟都做一遍,并沒有刻意去注重前后是否有不同。所以,這邊應(yīng)該是修飾器=編譯時執(zhí)行的函數(shù),這個函數(shù)執(zhí)行之后導(dǎo)致的結(jié)果是類行為有所改變。

既然,上面說了,是對類行為的改變,所以修飾器一般用在類聲明時候?qū)︻惱锩娣椒ê蛯傩缘男揎棥?/p>回答2:

說白了,代碼大體分編譯階段和運(yùn)行階段,你可以理解成編譯階段把代碼解析成一個樹,到了運(yùn)行階段時,按照編譯形成的樹進(jìn)行運(yùn)行。你可以在github上搜索一下core-decorators.js,這個庫就是一個修飾器的實(shí)例。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 肃宁县| 桑植县| 信阳市| 万山特区| 安化县| 开封县| 福海县| 隆尧县| 社会| 英德市| 孝感市| 辽阳市| 宜川县| 望江县| 西城区| 丹江口市| 德清县| 潞城市| 马尔康县| 务川| 临猗县| 长春市| 胶南市| 长葛市| 井研县| 洛隆县| 山阴县| 葵青区| 承德县| 二手房| 虹口区| 乐亭县| 清河县| 额敏县| 玉门市| 湘潭县| 漳浦县| 藁城市| 新田县| 新竹县| 垫江县|