Moment: Object.freeze() ์ดํ›„์— ๋ชจ๋“  ๋น„๋Œ์—ฐ๋ณ€์ด ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”

์— ๋งŒ๋“  2016๋…„ 01์›” 14์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moment/moment

#1754์— ๋Œ€ํ•œ ํ† ๋ก ์—์„œ @kruncher ์˜ ์š”์ฒญ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ˆœ๊ฐ„ ์ธ์Šคํ„ด์Šค์—์„œ Object.freeze๋ฅผ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์ด ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ :

let now = Object.freeze(moment());
if (now.isSameOrBefore(anotherTime)) { // throws exception
}

์˜ˆ์™ธ:

TypeError: Can't add property _isValid, object is not extensible
 at valid__isValid (C:\git\quick-test\node_modules\moment\moment.js:93:24)
 at Moment.moment_valid__isValid [as isValid] (C:\git\quick-test\node_modules\moment\moment.js:2195:16)
 at Moment.isSame (C:\git\quick-test\node_modules\moment\moment.js:1945:44)
 at Moment.isSameOrBefore (C:\git\quick-test\node_modules\moment\moment.js:1962:21)

์›ํ•˜๋Š” ๊ฒฝ์šฐ Object.freeze๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Help Wanted

๋ชจ๋“  4 ๋Œ“๊ธ€

const moment = require('moment')
const today = Object.freeze(moment()); 
today.toString()
   => 'Tue May 02 2017 10:04:52 GMT-0400'
today.add(1, 'day')
   => moment("2017-05-03T10:04:52.889")
today.toString()
  => 'Wed May 03 2017 10:04:52 GMT-0400'

์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ Object.freeze ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 3.x ์— ๋ถˆ๋ณ€์„ฑ์— ๋Œ€ํ•œ ํฐ ์ถ”์ง„๋ ฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ๋™์•ˆ Object.freeze์— ์‹ ๋ขฐ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? /

๋…ธ๋“œ ๋ฒ„์ „: 6.10(~lts)
๋ชจ๋ฉ˜ํŠธ ๋ฒ„์ „: 2.18.1

@butterflyhug - ์—„๊ฒฉ ๋ชจ๋“œ์—์„œ๋„ TypeError๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@SeanDunford- ์ด์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 2.x์—์„œ ๋ถˆ๋ณ€์„ฑ์„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ์ฒด ๊ฐ€ frozen ๋˜๋Š” deepFrozen ์ธ ๊ฒฝ์šฐ์—๋„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด

@marwahaha - ์ด์ œ Luxon์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์šฐ๋ฆฌ๋Š” 3.x๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ข‹์•„์š”, ๋‹ซ๊ณ  Object.freeze๊ฐ€ 2.x์˜ moment ๋Œ€ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰