Đó là một câu hỏi cũ và lời xin lỗi vì đây không phải là ý định của tôi, chỉ hy vọng nó sẽ giúp ích cho ai đó.
Ngoài những gì razorbeard nói (.clone()
v.v.), tôi đã tạo mô-đun NPM gắn các phương thức bất biến vào bất kỳ thứ gì Moment.js đi kèm. Mục đích không phải là phá vỡ mã hiện tại để mô-đun thêm các phương thức mới với Immu
tên của nó.
Mỗi trường hợp được trả về bởi nhà máy thời điểm sẽ được trang trí bằng các phương thức bất biến, ví dụ: moment().startOf()
sẽ có tương ứng startOfImmu()
, add()
sẽ có, addImmu()
v.v. Mỗi trường hợp đó trả về khoảnh khắc mới thay vì sửa đổi khoảnh khắc hiện có. Để sử dụng nó, chỉ cần vượt qua moment
nhà máy momentImmutableMethods
để có quyền truy cập vào các phương thức bất biến mới. Thí dụ:
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"
Nó có trên NPM tại https://www.npmjs.com/package/moment-immutable-methods