我正在寻找代码基本结构的解决方案。我试图使用更少的括号或单词。我不知道有没有办法,但我想问:)
我正在尝试创建一个动态对象,当其他一些东西发生变化时,该对象会发生变化。基本上,我必须使用一个函数。我在这里是为了简化我使用的方式。
让我给你一个可行的解决方案:
function mainFunction(object){
// getElementById(object.id)
// use object.date
// use object.string
}
mainFunction (function(){return{ id:"varName",date: Date.now(), string:"test2" }})
在这个例子中,我对这个命令不满意:
mainFunction (function(){return{
}})
现在,问题 1:有没有办法使用简短的方法来创建动态对象?
预期代码
mainFunction{ id:"varName",date: Date.now(), string:"test2" };
->每次调用对象时都必须重新定义日期。 ->在引号中使用 date.now 并用 eval 或函数调用它没有意义。
问题2:有没有办法在开头使用varName,即使它是未定义的?
预期代码
varName.mainFunction (date: Date.now(), string:"test2");
预期结果
{
if (typeof varName !=="undefined"){
//create it.
}
// call the main function.
}
->尝试,捕获等在这里不起作用。因为我不想在主代码上使用 try。
非常感谢
如果我理解正确,您可以使用访问器属性来执行您所询问的括号部分。在这种情况下,我不会称之为良好做法(函数调用通常应该看起来像函数调用,而不是属性访问),但是如果您想:
function mainFunction(object){
const first = object.date;
console.log(first);
while (object.date === first)
; // Busy loop for up to one millisecond
console.log(object.date);
}
mainFunction({
get date() {
return Date.now();
}
// get string() { etc.
});
请注意object.date
如何触发对object
上date
属性的get
函数的函数调用,因此值会随着时间的变化而变化。
我无法弄清楚关于varname
的问题,但从根本上varname.mainFunction
varname
拥有价值undefined
总是会失败,你不能做任何事情来阻止mainFunction
。