我有一段代码,在一个主代码中有两个嵌套函数。
如何使用this
关键字检索嵌套函数?有可能吗?
我已经尝试过times().present()
和new times().present()
,但它们似乎都无法正常工作并返回undefined
。
我在w3School上找到了类似的示例,但是在这种情况下似乎无法实现。
先谢谢了。
function times() {
var timingObj = function() {
this.present = currentTime;
this.past = pastTime;
};
var currentTime = function() {
var hourMin = new Date().getHours() + ":" + new Date().getMinutes();
return hourMin;
};
var pastTime = function() {
if (new Date().getDay() == 5) {
return "07:40"
} else {
return "16:30"
}
};
return timingObj;
}
console.log(times().present());
//console.log(new times().present());
答案 0 :(得分:3)
function times() {
var currentTime = function() {
var hourMin = new Date().getHours() + ":" + new Date().getMinutes();
return hourMin;
};
var pastTime = function() {
if (new Date().getDay() == 5) {
return "07:40"
} else {
return "16:30"
}
};
return {
present: currentTime,
past: pastTime
};
}
console.log(times().present())
答案 1 :(得分:1)
您可以使用方法call()
。
function times() {
var timingObj = function() {
this.present = currentTime;
this.past = pastTime;
};
var currentTime = function() {
var hourMin = new Date().getHours() + ":" + new Date().getMinutes();
return hourMin;
};
var pastTime = function() {
if (new Date().getDay() == 5) {
return "07:40"
} else {
return "16:30"
}
};
return timingObj;
}
times().call(null);
console.log(present(), past());
或将它们定义为prototype
function times() {
var timingObj = function() {
this.present = timingObj.prototype.currentTime;
this.past = timingObj.prototype.pastTime;
};
timingObj.prototype.currentTime = function() {
return new Date().getHours() + ":" + new Date().getMinutes();
};
timingObj.prototype.pastTime = function() {
return new Date().getDay() === 5 ? "07:40" : "16:30";
};
return timingObj;
}
console.log(times().prototype.currentTime(), times().prototype.pastTime());
//times().call(null);
//console.log(present(), past());