javascript 新方向 (2)

在面向对象的语言世界里,语言都支持多态这个特性,同一个函数可以接受不同个数参数,执行不同的函数体。我们看看在 javascript 世界里是如何支持函数参数的。

我们写一个比较来获得最大值的方法,接受两个参数。没毛病。

8207483-5d83e8926884a86a.jpg

如果我们突发奇想传入三个参数 1, 8 , 3  来调用这个函数,看一看效果,没毛病

8207483-4cd4c095d7a1a247.jpg

其实在 javascript 函数中有一个隐藏变量 arguments 来包括函数。我们打印一下 arguments 看似是对象,属性为索引。

8207483-42abd033fb75bbe6.jpg

看上去很像数组,我们判断一下 arguments 是不是数组类型,结果让我们失望,arguments 并不是数组类型。

8207483-45fe34377f9c0f4b.jpg

但是我们可以用遍历数组的方式来遍历 arguments 来查看每一个(调用函数的)参数。

8207483-b20d4a7ce73d4ca1.jpg

好,虽然可能 arguments 不是数组,但是是不是 arguments 会有数组的一些特性,或者可能具有 reduce 方法。

8207483-c3957d6e2684dbab.jpg

结果 arguments 并不具有 reduce 方法。我们可以解决这个问题,我们将原有的参数的形式修改为接受一个解构变量。

8207483-eb5dcacc17734ac0.jpg

这个解构变量...numbers 就是我们想要的数组类型。

8207483-72e0f33057e6c66e.jpg

那么我们就可以像使用数组那样来使用 numbers 。这样一来我们就可以改造一下函数。

8207483-5132cf8a523efaac.jpg

如果我们想将数组作为 max 方法参数来调用函数,如果我们这样写来调用函数,是不是看上去不那么优雅,作为一个程序员,我们做什么事都要合理还要优雅,我们都是在一次一次重构中来追求优雅中进步和升华的。

8207483-fd208c64e740c67e.jpg

这样来调用函数看起来就优雅,我们还是用解构,其实这个 es6 的新特性也是我个人比较喜欢一个特性。

8207483-1aa456b2d992fddf.jpg

写一个欢迎方法,呵呵打印所有参数,可能有人来看怎么都是简单的呢,其实一切都起源于简单,而终止复杂。

8207483-ed6b0e24623bc993.jpg

一下为一些解构的代码,不做过多解释想必大家一看就明白了。

8207483-4354fb05fbbe9632.jpg
8207483-d5d8f172507719ef.jpg

猜你喜欢

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