تقسيم طلب kruncher من المناقشة في # 1754:
لقد كنت أستخدم 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 - لا يمكنني إعادة إنتاج خطأ النوع ، حتى في الوضع
SeanDunford - يبدو هذا غريبًا. لا أعرف ما إذا كان يمكنك الوثوق في الثبات في 2.x.
أود المساعدة في فهم سبب ظهور هذا الكائن القابل للتغيير ، حتى لو كان مجمداً أو متجمداً .
marwahaha - لقد تحولنا إلى Luxon الآن. في ذلك الوقت لم نكن مستعدين لاستخدام 3.x.
حسنًا ، سأغلق وأفترض أن Object.freeze لا يعمل مقابل moment
s في 2.x.