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

时间:2019-06-08 12:40:19

标签: javascript

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

我正在尝试创建一个动态对象,该对象在其他一些内容更改时也会更改。基本上,我必须使用一个函数。我是在这里简化我的使用方式。

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

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。

非常感谢您

1 个答案:

答案 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的问题,但是从根本上说varnamevarname.mainFunction的值为varname总是会失败,并且您无能为力在undefined中可以避免这种情况。