这就是一个 34760 Star 的 Javascript 库该有的表现?

2017-12-20 10:31:07 +08:00
 lihongjie0209

var now = moment()
undefined
var startOfMonth = now.startOf("month")
undefined
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Fri Dec 01 2017 00:00:00 GMT+0800 (China Standard Time), _z: null}
var endOfMonth = now.endOf("month")
undefined
endOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
now
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
10632 次点击
所在节点    问与答
108 条回复
FrankFang128
2017-12-20 12:56:24 +08:00
我认可楼主的观点,momentjs API 设计不合理
lihongjie0209
2017-12-20 12:57:23 +08:00
@EridanusSora 当接口有返回值时(查询)不应该改变对象内部的状态, 其次时间对象应该是不可变的
FrankFang128
2017-12-20 12:57:49 +08:00
还有一个更有误导性的
jQuery
$.inArray(1, [1,2,3])
猜猜返回值

你一定以为是 bool
实际是 0,下标
murmur
2017-12-20 13:00:53 +08:00
楼主怕是 react 中毒了神 tm 不可变对象谁教你 date 必须不可变 像 java 那种用 date 必须配 calendar 很舒服么
zankard
2017-12-20 13:02:19 +08:00
momentjs 居然是这样设计 api 的
jiangzhuo
2017-12-20 13:04:53 +08:00
别跟 js 谈 oo
lihongjie0209
2017-12-20 13:09:22 +08:00
@murmur java7 之前的时间 API 一直被骂, Java8 之后出了新的 API, 你可以去看看
lihongjie0209
2017-12-20 13:10:17 +08:00
@jiangzhuo `js 吹`吹 NB 的时候可是把 OO,FP 都揽在身上的
lihongjie0209
2017-12-20 13:11:21 +08:00
@zankard 反`后端`常识, 前端可能只接触到这些类库, 感觉不到
lihongjie0209
2017-12-20 13:12:00 +08:00
@FrankFang128 可怕, 没手册真不会写 js
eriale
2017-12-20 13:12:27 +08:00
楼主说的没错,moment 的开发者也在清理有副作用的部分,包括 startOf 和 endOf 都要向 immutable 方向改。
https://github.com/moment/moment/issues/1754
多说一句,这个 issue 是 3 年前提的,现在还没有改完,如果我是前端开发,我会考虑在新项目避免使用这个库。
lihongjie0209
2017-12-20 13:12:51 +08:00
@FrankFang128 总算有人看懂了, 谢谢
CDL
2017-12-20 13:13:55 +08:00
js 不等于 java 谢谢
[1,2,3].indexOf(1)返回的也是 0 谢谢
lihongjie0209
2017-12-20 13:14:11 +08:00
@eriale 我是后端, 偶尔写前端, 需要用一个时间类库就找了一个最火的, 没想到都是坑.
lihongjie0209
2017-12-20 13:15:22 +08:00
@CDL indexOf 是查询(Query), 有返回值没有副作用很正常
quinoa42
2017-12-20 13:17:41 +08:00
没写过 js,不过支持应该 immutable 的观点
无论是 OOP 还是 FP,尽可能减少 mutable 的情况对谁都好
SourceMan
2017-12-20 13:18:40 +08:00
一开始就有附言那一段不挺好(除了最后一句)
非得言外之意寻知己
lihongjie0209
2017-12-20 13:20:43 +08:00
@SourceMan 这个是我的错
holyghost
2017-12-20 13:21:39 +08:00
楼主说的是对的。

软件设计是一门学问啊。
suikator
2017-12-20 13:25:35 +08:00
笑看 V2EX 大神把楼主批判一番

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416195

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX