我們創(chuàng)建一個(gè)對(duì)象 sam ,讓后調(diào)用 Object.freeze 將該對(duì)象變?yōu)椴豢勺儗?duì)象。

這樣我們創(chuàng)建一個(gè)對(duì)象時(shí),如果是在之前對(duì)象的基礎(chǔ)上進(jìn)行擴(kuò)展,也可以理解繼承,然后修改那些標(biāo)識(shí)不同對(duì)象的屬性值來重新獲取定義一個(gè)對(duì)象。類似在這里我們 olderSam 的 age 增加? 1,看上去沒有什么問題,通常我們也是這么做,但是這樣做的就會(huì)在 olderSam 和 sam 之間產(chǎn)生耦合度。


設(shè)想我們?yōu)閷?duì)象添加 sam 一個(gè)新的 twitter 的屬性,這時(shí)樣還需修改 olderSam, 添加該屬性以保持一致,這就是我們的問題。

然后不手動(dòng)地為 olderSam?添加 twitter 屬性,是否無法自動(dòng)更新添加該屬性以繼承 sam?的?twitter 屬性的。?

這樣我們就需要在 sam 和 olderSam 兩個(gè)對(duì)象上做重復(fù)的工作。這是違反我們寫優(yōu)雅代碼的原則的。

解構(gòu)我們通常組裝一個(gè)對(duì)象,根據(jù)屬性來組裝對(duì)象,類似安裝圖紙來組裝一個(gè)設(shè)配,那么解構(gòu)就類似安裝圖紙將現(xiàn)有的對(duì)象進(jìn)行一一分解。我們可以通過解構(gòu)的特性來輕松地實(shí)現(xiàn)我們想要的效果。

我們可以定義一個(gè)方法,接受一個(gè)名稱作為參數(shù),輸出?hello ...?呵呵。


在 kotlin 這樣現(xiàn)代新興語言基本都支持參數(shù)默認(rèn)值的特性,在 javascript?中?es6?中同樣也支這個(gè)新的特性。我們可以在默認(rèn)參數(shù)值中使用模板字面量,這里通過$占位符解析的變量。

我們可以在參數(shù)變量中使用解析器。

如果我們輸入 null ,會(huì)將?null?作為值輸入顯示。


但是如果傳入 undefined?作為參數(shù)值,就會(huì)使用默認(rèn)值而認(rèn)為您沒有傳入?yún)?shù)值。?
