javaScript 新方向 (3)

我们创建一个对象 sam ,让后调用 Object.freeze 将该对象变为不可变对象。

8207483-9c2ad22d0cd8cb13.jpg

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

8207483-930430cc18c550f7.jpg


8207483-1764a79bd1769e9b.jpg

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

8207483-b5e2b5d3de71c5c2.jpg

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

8207483-9a3ee62afd65249c.jpg

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

8207483-7de1a8ae7e9de7b6.jpg

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

8207483-0951235908cb1f84.jpg

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

8207483-02e4e1693150e85b.jpg
8207483-268bfc886141b49c.jpg

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

8207483-989c8694b2b4d992.jpg

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

8207483-1b3e941cc38b5d77.jpg

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

8207483-cec04ca5e7d39291.jpg
8207483-19bc49bd06235d9e.jpg

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

8207483-11b9805cbb47c558.jpg

猜你喜欢

转载自blog.csdn.net/weixin_34375251/article/details/86797438