我正在编写一个函数来存储画布模式。如果请求画布模式并且它存在,则返回对画布的引用,否则首先创建画布,然后返回引用。
我的第一次尝试是将这些画布引用添加到一个单独的全局变量,但后来我将其更改为将它们添加到函数中(因为这会保存一个变量)。
但是,我可以从代码中的任何位置读取该属性(无需调用该函数)。这并不是一个真正的大问题,但我想知道它是否可以隐藏(因此,只有调用允许通过返回访问该属性)。
alert(myFunction("keyOne")); // "keyOne " + timestamp of now
alert(myFunction("keyTwo"));
alert(myFunction("keyOne")); // same as above, because there it was created
alert(myFunction("keyTwo"));
alert(myFunction.keyOne); // can read it without calling the function, is it possible to hide it?
function myFunction(myKey)
{
if (!(myFunction.hasOwnProperty(myKey))) { myFunction[myKey] = myKey + " " + Date(); }
return myFunction[myKey];
}
编辑:我不知道接受哪个答案。添加变量正是我试图避免的事情。此外,它还给代码增加了很多麻烦,使其难以阅读(但这可能是唯一的方法)。如果这是真的,我就这样离开它。可读性对我来说非常重要。