Moment: تفعيل جميع الوظائف التي لا تحتوي على طفرات بعد Object.freeze ()

تم إنشاؤها على ١٤ يناير ٢٠١٦  ·  4تعليقات  ·  مصدر: moment/moment

تقسيم طلب 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 عند الرغبة؟

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 - لا يمكنني إعادة إنتاج خطأ النوع ، حتى في الوضع

SeanDunford - يبدو هذا غريبًا. لا أعرف ما إذا كان يمكنك الوثوق في الثبات في 2.x.

أود المساعدة في فهم سبب ظهور هذا الكائن القابل للتغيير ، حتى لو كان مجمداً أو متجمداً .

marwahaha - لقد تحولنا إلى Luxon الآن. في ذلك الوقت لم نكن مستعدين لاستخدام 3.x.

حسنًا ، سأغلق وأفترض أن Object.freeze لا يعمل مقابل moment s في 2.x.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات