我有如下方法
function setme(){
var date = 'new date()';
}
function getName1(){
setme();
}
function getName2(){
setme();
}
function getName3(){
setme();
}
function getName4(){
setme();
}
如何避免每次都调用 setme 方法,我们还有其他优化的解决方案吗?
答案 0 :(得分:3)
我不确定您要完成什么,因为日期始终需要一个函数来检索最新的日期。但是,如果要以面向类的方式在构造函数中定义变量:
class Names {
constructor() {
this.date = new Date();
}
getName1() {
return this.date;
}
getName2() {
return this.date;
}
getName3() {
return this.date;
}
}
//If you only create a new class object
var n = new Names;
console.log(n.getName1());
console.log(n.getName2());
console.log(n.getName3());
//if you create a new class object for every call
console.log((new Names).getName1());
console.log((new Names).getName2());
console.log((new Names).getName3());
答案 1 :(得分:1)
这将只设置一次日期,然后将setFunction设置为null,以在由于某种原因而使setFunction很大时释放内存。
function executeOnce(executable) {
return function () {
if (executable !== null) {
executable();
executable = null;
}
}
}
var setme = executeOnce(
function() {
date = 'new date()';
}
);
function getName1(){
setme();
}
function getName2(){
setme();
}
function getName3(){
setme();
}
function getName4(){
setme();
}