Ini pertanyaan lama dan permintaan maaf untuk promosi diri yang tidak tahu malu karena ini bukan niat saya, hanya berharap itu akan membantu seseorang.
Selain apa yang dikatakan razorbeard ( .clone()
dll) saya membuat modul NPM yang melampirkan metode yang tidak dapat diubah ke apa pun yang dilengkapi dengan Moment.js di luar kotak. Tujuannya bukan untuk merusak kode yang ada sehingga modul menambahkan metode baru denganImmu
menambahkan namanya.
Setiap instance yang dikembalikan oleh pabrik saat akan didekorasi dengan metode yang tidak dapat diubah misalnya moment().startOf()
akan memiliki yang sesuai startOfImmu()
, add()
akan memiliki, addImmu()
dll. Masing-masing mengembalikan momen baru daripada memodifikasi yang sudah ada. Untuk menggunakannya, cukup lewati moment
pabrik momentImmutableMethods
untuk mendapatkan akses ke metode baru yang tidak dapat diubah. Contoh:
var moment = require('moment'); // or moment-timezone
import { momentImmutableMethods } from 'moment-immutable-methods';
// to decorate instances with immutable methods we need to extend moment factory as below:
momentImmutableMethods(moment);
// now every instance returned by moment will have Immu methods attached.
// IMMUTABLE EXAMPLE
// we using immutable methods that were attached to every instance, these have Immu appended to original name
const ddd = moment({
hour: 5,
minute: 10
});
// Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…}, _locale: Locale, …}
const eee = ddd.startOfImmu('day');
// Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…}, _locale: Locale, …}
console.log(ddd === eee);
// false
const fff = eee.startOfImmu('month');
// Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…}, _locale: Locale, …}
console.log(ddd === fff);
// false
console.log(eee === fff);
// false
console.log(ddd.format('DD/MM/YY HH:mma'));
// "14/04/18 05:10am"
console.log(eee.format('DD/MM/YY HH:mma'));
// "14/04/18 00:00am"
console.log(fff.format('DD/MM/YY HH:mma'));
// "08/04/18 00:00am"
Ada di NPM di https://www.npmjs.com/package/moment-immutable-methods