我正在寻找代码基本结构的解决方案。我正在尝试使用较少的括号或单词。我不知道有没有办法,但我想问一下:)
我正在尝试创建一个动态对象,该对象在其他一些内容更改时也会更改。基本上,我必须使用一个函数。我是在这里简化我的使用方式。
让我给您一个可行的解决方案:
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或Function调用是没有意义的。
问题2: 有没有办法在开头使用varName,即使它未定义?
//期望的代码
varName.mainFunction (date: Date.now(), string:"test2");
//预期结果
{
if (typeof varName !=="undefined"){
//create it.
}
// call the main function.
}
->尝试,捕捉等。在此不起作用。因为我不想在主代码上使用try。
非常感谢您
答案 0 :(得分:0)
如果我对您的理解正确,则可以使用访问器属性在要查询的内容中加上括号。在这种情况下,我不会称其为良好做法(函数调用通常应看起来像函数调用,而不是属性访问),但是如果您愿意:
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
的{{1}}属性如何get
触发对date
函数的函数调用,因此值更改为时间改变了。
我无法弄清楚关于object
的问题,但是从根本上说varname
和varname.mainFunction
的值为varname
总是会失败,并且您无能为力在undefined
中可以避免这种情况。