javaScript 新方向 (3)
2019-01-27 本文已影响47人
zidea
我们创建一个对象 sam ,让后调用 Object.freeze 将该对象变为不可变对象。

这样我们创建一个对象时,如果是在之前对象的基础上进行扩展,也可以理解继承,然后修改那些标识不同对象的属性值来重新获取定义一个对象。类似在这里我们 olderSam 的 age 增加 1,看上去没有什么问题,通常我们也是这么做,但是这样做的就会在 olderSam 和 sam 之间产生耦合度。


设想我们为对象添加 sam 一个新的 twitter 的属性,这时样还需修改 olderSam, 添加该属性以保持一致,这就是我们的问题。

然后不手动地为 olderSam 添加 twitter 属性,是否无法自动更新添加该属性以继承 sam 的 twitter 属性的。

这样我们就需要在 sam 和 olderSam 两个对象上做重复的工作。这是违反我们写优雅代码的原则的。

解构我们通常组装一个对象,根据属性来组装对象,类似安装图纸来组装一个设配,那么解构就类似安装图纸将现有的对象进行一一分解。我们可以通过解构的特性来轻松地实现我们想要的效果。

我们可以定义一个方法,接受一个名称作为参数,输出 hello ... 呵呵。


在 kotlin 这样现代新兴语言基本都支持参数默认值的特性,在 javascript 中 es6 中同样也支这个新的特性。我们可以在默认参数值中使用模板字面量,这里通过$占位符解析的变量。

我们可以在参数变量中使用解析器。

如果我们输入 null ,会将 null 作为值输入显示。


但是如果传入 undefined 作为参数值,就会使用默认值而认为您没有传入参数值。
