![]() | 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 求同存异 |