首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Es6类变量

Es6类变量
EN

Stack Overflow用户
提问于 2017-03-21 12:59:11
回答 4查看 249关注 0票数 0

我已经创建了这个ES6类,并且尝试使用我在构造函数中定义的变量,但是当我使用console.log this.customerTz时,它返回undefined

我还试图将变量放在类的首位,但它似乎不起作用。

有可能有变数吗?

代码语言:javascript
复制
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;
}
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-21 13:57:58

看起来您根本不想要一个class,因为没有理由实例化这个构造函数。相反,对模块使用普通的对象文本:

代码语言:javascript
复制
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;
    }
};
票数 1
EN

Stack Overflow用户

发布于 2017-03-21 14:45:55

convertToUtc是一个静态方法,它不能访问实例上的任何属性。相反,您可以像下面这样修改代码

代码语言:javascript
复制
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()));
代码语言:javascript
复制
<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>

票数 2
EN

Stack Overflow用户

发布于 2017-03-21 13:44:13

因为convertToUtc是一个静态方法,所以在调用convertToUtc方法时没有DateTimeConverter类的实例this。您可以使convertToUtc不是静态方法,然后在DateTimeConverter类的实例上调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42927885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档