#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๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์์ ํ ์ ์์ต๋๊น?
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
๋ํด ์๋ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.