Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数返回函数而不是对象_Javascript_Function_Typescript - Fatal编程技术网

Javascript 函数返回函数而不是对象

Javascript 函数返回函数而不是对象,javascript,function,typescript,Javascript,Function,Typescript,reI am Makijing一个Typescript脚本,我想在属于同一类的另一个函数中使用函数convertUnixDate。我希望getAllSMS函数中的date变量的值等于convertUnixDate返回的对象。但现在date等于一个空函数,而不是对象。为什么? export class SMSManager { filters: object; constructor(filter: object) { this.filters = filter; } public s

reI am Makijing一个Typescript脚本,我想在属于同一类的另一个函数中使用函数
convertUnixDate
。我希望
getAllSMS
函数中的
date
变量的值等于
convertUnixDate
返回的对象。但现在date等于一个空函数,而不是对象。为什么?

export class SMSManager {

filters: object;
constructor(filter: object) {
    this.filters = filter;
}

public static convertUnixDate(unixTimeStamp: number): object {
    let date = new Date(unixTimeStamp*1000);
    return {
        'day': date.getDate(),
        'month': date.getMonth(),
        'year': date.getFullYear(),
        'hour': date.getHours(),
        'minutes': date.getMinutes(),
        'seconds': date.getSeconds()
    };
}

public getAllSMS() {
    if (SMS) {
        SMS.listSMS(this.filters, function (data) {
            let contacts = {};
            for (let i = 0; i < data.length; i++) {
                if ((data[i].address).length > 7 && (data[i].address).match("[0-9]+")) {
                    let date = () => {
                        return this.convertUnixDate(data[i].date);
                    };
                    if (contacts.hasOwnProperty(data[i].address)) {
                        Object.defineProperty(contacts[data[i].address], data[i]._id, {
                            value: {
                                "body": data[i].body,
                                "date": date
                            }
                        });
                    } 
        }, function (err) {
            console.log('error list sms: ' + err);
        });
    }

}
导出类smsmsmanager{
过滤器:对象;
构造函数(筛选器:对象){
this.filters=过滤器;
}
公共静态convertUnixDate(unixTimeStamp:number):对象{
let date=新日期(unixTimeStamp*1000);
返回{
“day”:date.getDate(),
“月”:date.getMonth(),
“年”:日期。getFullYear(),
“小时”:date.getHours(),
“分钟”:date.getMinutes(),
“秒”:date.getSeconds()
};
}
公共getAllSMS(){
如果(短信){
SMS.listSMS(this.filters,函数(数据){
让contacts={};
for(设i=0;i7&&(数据[i].address).match(“[0-9]+”){
让日期=()=>{
返回此.convertUnixDate(数据[i].date);
};
if(contacts.hasOwnProperty(数据[i].地址)){
Object.defineProperty(联系人[data[i]。地址],数据[i]。\u id{
价值:{
“body”:数据[i]。body,
“日期”:日期
}
});
} 
},函数(err){
log('error list sms:'+err);
});
}
}

}

它执行您编写的操作:
()=>{…}
东西是一个函数,它存储在
日期


您只需编写
let date=smsmsmanager.convertUnixDate(数据[i].date);
即可。它执行您编写的操作:
()=>{…}
是一个函数,它存储在
日期中

您只需编写
let date=smsmsmanager.convertUnixDate(数据[i].date);
取而代之。

因为您显式地将其设置为。删除箭头函数,保留正文。因为您显式地将其设置为。删除箭头函数,保留正文。谢谢,但是我使用箭头函数能够在
getAllSMS
函数中使用函数
convertUnixDate
。如果我这样做
让date=this.convertUnixDate(数据[i].date);
我得到一个
未捕获的(承诺中)TypeError:无法读取null的属性“convertUnixDate”
@neiya抱歉,我没有看到它是静态方法。请参阅编辑。对于静态方法,您应该使用类名。另一方面,请注意:
为null,因为调用发生在匿名函数中,而匿名函数未绑定到对象。@neiya convertUnixDate是静态函数。所以不要用
this
来调用它。把它叫做
smsmsmanager.convertUnixDate()
谢谢,但是我使用了一个箭头函数,可以在
getAllSMS
函数中使用函数
convertUnixDate
。如果我这样做了
就让date=this.convertUnixDate(数据[I].date);
我得到了一个
Uncaught(承诺)TypeError:无法读取null的属性“convertUnixDate”
@neiya抱歉,我没有看到它是静态方法。请参阅编辑。对于静态方法,您应该使用类名。另一方面,请注意:
为null,因为调用发生在匿名函数中,而匿名函数未绑定到对象。@neiya convertUnixDate是静态函数。因此,不要用
this
调用它。请将其称为
smsmsmanager.convertUnixDate()