Ecmascript 6 Es6类变量
我创建了这个ES6类,我试图使用我在构造函数中定义的变量,但是当我console.logEcmascript 6 Es6类变量,ecmascript-6,Ecmascript 6,我创建了这个ES6类,我试图使用我在构造函数中定义的变量,但是当我console.logthis.customerTz时,它返回undefined 我还尝试将变量放在类的顶部,但似乎不起作用。 有可能有变量吗 class DateTimeConverter { constructor() { this.format = 'YYYY-MM-DD HH:mm:ss'; this.customerTz = 'Europe/Oslo'; } static convertToUtc(da
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;
}
}
由于
convertToUtc
是一个静态方法,因此在调用convertToUtc方法时,没有DateTimeConverter类的实例this
。您可以将convertToUtc
设置为非静态方法,然后在DateTimeConverter类的实例上调用它。由于convertToUtc
是静态方法,因此在调用convertToUtc方法时,您没有DateTimeConverter类的实例this
。您可以将convertToUtc
设置为非静态方法,然后在DateTimeConverter类的实例上调用它。您的函数convertToUtc
是静态的。静态函数与类本身相关联,而不是与类的实例相关联。由于未创建实例,因此未调用构造函数。因此,this.customerTz
将不会在函数中定义。取出static
class DateTimeConverter {
constructor() {
this.format = 'YYYY-MM-DD HH:mm:ss';
this.customerTz = 'Europe/Oslo';
}
convertToUtc(date) {
console.log(this.customerTz);
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;
}
}
您的函数
convertToUtc
是静态的。静态函数与类本身相关联,而不是与类的实例相关联。由于未创建实例,因此未调用构造函数。因此,this.customerTz
将不会在函数中定义。取出static
class DateTimeConverter {
constructor() {
this.format = 'YYYY-MM-DD HH:mm:ss';
this.customerTz = 'Europe/Oslo';
}
convertToUtc(date) {
console.log(this.customerTz);
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;
}
}
看起来您根本不需要
类
,因为没有理由实例化这个构造函数。相反,请为模块使用普通对象文字:
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;
}
};
看起来您根本不需要
类
,因为没有理由实例化这个构造函数。相反,请为模块使用普通对象文字:
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;
}
};
convertToUtc
是一个静态方法,它无法访问实例上的任何属性。相反,您可以像下面这样修改代码
类日期时间转换器{
静态转换TOUTC(日期){
console.log(DateTimeConverter.customerTz);//静态属性
//设置客户时区
日期=矩.tz(日期,日期时间转换器.customerTz);
//转换为UTC
日期=date.clone().tz('UTC');
//将格式设置为PHP认为有效的格式
date=date.format(DateTimeConverter.format);
返回日期;
}
}
DateTimeConverter.format='YYYY-MM-DD HH:MM:ss';
DateTimeConverter.customerTz='欧洲/奥斯陆';
log(DateTimeConverter.convertToUtc(newdate())代码>
convertToUtc
是一个静态方法,它无法访问实例上的任何属性。相反,您可以像下面这样修改代码
类日期时间转换器{
静态转换TOUTC(日期){
console.log(DateTimeConverter.customerTz);//静态属性
//设置客户时区
日期=矩.tz(日期,日期时间转换器.customerTz);
//转换为UTC
日期=date.clone().tz('UTC');
//将格式设置为PHP认为有效的格式
date=date.format(DateTimeConverter.format);
返回日期;
}
}
DateTimeConverter.format='YYYY-MM-DD HH:MM:ss';
DateTimeConverter.customerTz='欧洲/奥斯陆';
log(DateTimeConverter.convertToUtc(newdate())代码>