1
Septembers 2015-06-05 16:39:27 +08:00
递归
|
2
learnshare 2015-06-05 16:41:30 +08:00
用来模拟函数重载。
|
3
zythum 2015-06-05 16:44:16 +08:00
模拟一个多态... fn.length 是这个方法行参的个数.
|
4
FrankFang128 2015-06-05 16:47:21 +08:00
不用学了,你懂 apply 和 arguments 怎样用就行了。
这是把 JS 不当 JS 用,不推荐。 |
5
Hyperion 2015-06-05 17:31:51 +08:00 via Android
用了一层层容器包裹来实现多态, 每add一次裹一层,参数个数对了就调用,否则就返回下一个。
@FrankFang128 逢小聪明必黑啊,但不了解这个,绝对不是什么好事。 我赌一块,近5年,这种做法还会存在,下一代javascript 的更迭,虽然不会和之前的javascript 统一那样,但也绝对不容易。 |
6
FrankFang128 2015-06-05 17:36:18 +08:00
@Hyperion 出现这种需求就是因为「我们的程序员只会用 Java / C#,JS 里没有重载他们觉得不可理喻」。
我觉得是因为某些程序员压根就不想学 JS 导致的。当然也无刻厚非。 这也说明了 JS 的灵活性。 不过初学者上来就学这个,很容易迷惑,说 JS 怎么这么烂,重载还要自己实现。 |
7
Hyperion 2015-06-05 17:37:36 +08:00 via Android
|
8
Hyperion 2015-06-05 17:40:47 +08:00 via Android
|
9
zythum 2015-06-05 17:41:57 +08:00
|
14
Septembers 2015-06-05 17:54:52 +08:00
@FrankFang128 fp 的一个非常重要的概念是 幕等
|
15
FrankFang128 2015-06-05 17:56:10 +08:00
@Hyperion 2 楼已经给了正确答案了,所以我只是补充一下 :)
|
16
chairuosen 2015-06-05 17:56:22 +08:00
@zythum 原来你也在这里。。。我是上周打电话问顶导的那个。。^_^
|
17
zythum 2015-06-05 18:04:08 +08:00
@chairuosen 艸 ...能不谈公司的事情么....
|
18
nilennoct 2015-06-05 18:05:28 +08:00
ninja.whatever = function(options) {
options = options || {}; var a = options.a, b = options.b; console.log(a, b); } |
19
learnshare 2015-06-05 18:21:05 +08:00
其实 TypeScript 也有类似的功能: http://www.typescriptlang.org/Handbook#functions-overloads 不过 TypeScript 又完全是另一回事了。
|
20
Hyperion 2015-06-05 18:30:56 +08:00 via Android
@FrankFang128 求同存异😗
|