我已经创建了这个ES6类,并且尝试使用我在构造函数中定义的变量,但是当我使用console.log this.customerTz时,它返回undefined。
我还试图将变量放在类的首位,但它似乎不起作用。
有可能有变数吗?
class DateTimeConverter {
constructor() {
this.format = 'YYYY-MM-DD HH:mm:ss';
this.customerTz = 'Europe/Oslo';
}
static convertToUtc(date) {
console.log(this.customerTz);
// Set customer timezone
date = moment.tz(date, this.customerTz);
// Convert to UTC
date = date.clone().tz('UTC');
// Set format to something PHP thinks is valid
date = date.format(this.format);
return date;
}
}发布于 2017-03-21 13:57:58
看起来您根本不想要一个class,因为没有理由实例化这个构造函数。相反,对模块使用普通的对象文本:
const DateTimeConverter = {
format: 'YYYY-MM-DD HH:mm:ss',
customerTz: 'Europe/Oslo',
convertToUtc(date) {
console.log(this.customerTz);
// Set customer timezone
date = moment.tz(date, this.customerTz);
// Convert to UTC
date = date.clone().tz('UTC');
// Set format to something PHP thinks is valid
date = date.format(this.format);
return date;
}
};发布于 2017-03-21 14:45:55
convertToUtc是一个静态方法,它不能访问实例上的任何属性。相反,您可以像下面这样修改代码
class DateTimeConverter {
static convertToUtc(date) {
console.log(DateTimeConverter.customerTz); // Static property
// Set customer timezone
date = moment.tz(date, DateTimeConverter.customerTz);
// Convert to UTC
date = date.clone().tz('UTC');
// Set format to something PHP thinks is valid
date = date.format(DateTimeConverter.format);
return date;
}
}
DateTimeConverter.format = 'YYYY-MM-DD HH:mm:ss';
DateTimeConverter.customerTz = 'Europe/Oslo';
console.log(DateTimeConverter.convertToUtc(new Date()));<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone.min.js"></script>
发布于 2017-03-21 13:44:13
因为convertToUtc是一个静态方法,所以在调用convertToUtc方法时没有DateTimeConverter类的实例this。您可以使convertToUtc不是静态方法,然后在DateTimeConverter类的实例上调用它。
https://stackoverflow.com/questions/42927885
复制相似问题