在本机 JS 上以不同的方式调用函数



我正在寻找代码基本结构的解决方案。我试图使用更少的括号或单词。我不知道有没有办法,但我想问:)

我正在尝试创建一个动态对象,当其他一些东西发生变化时,该对象会发生变化。基本上,我必须使用一个函数。我在这里是为了简化我使用的方式。

让我给你一个可行的解决方案:

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如何触发对objectdate属性的get函数的函数调用,因此值会随着时间的变化而变化。

我无法弄清楚关于varname的问题,但从根本上varname.mainFunctionvarname拥有价值undefined总是会失败,你不能做任何事情来阻止mainFunction

最新更新