Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据存储为函数的属性_Javascript - Fatal编程技术网

Javascript 将数据存储为函数的属性

Javascript 将数据存储为函数的属性,javascript,Javascript,我试图理解在javascript上将数据指定为函数变量是如何工作的 我创建了fn()foo,并分配了一个属性foo.bar={},用于测试缓存的请求。这个很好用 同时,我使用prototype创建了一个示例,用于测试和证明这个概念()。在这里,如果我们在没有“new”关键字的情况下尝试,原型将无法工作 我想知道在哪里可以找到更多关于将数据存储为函数属性的信息,或者获取更多关于为什么这样做的信息 function hasCache( param ) { var results; if

我试图理解在javascript上将数据指定为函数变量是如何工作的

我创建了fn()foo,并分配了一个属性foo.bar={},用于测试缓存的请求。这个很好用

同时,我使用prototype创建了一个示例,用于测试和证明这个概念()。在这里,如果我们在没有“new”关键字的情况下尝试,原型将无法工作

我想知道在哪里可以找到更多关于将数据存储为函数属性的信息,或者获取更多关于为什么这样做的信息

function hasCache( param ) {

  var results;

  if ( hasCache.cache[param] ) {

    console.log('-> Cached:');
    results = hasCache.cache[param];

  } else {

    console.log('-> Not Cached:');
    results = param;
    hasCache.cache[param] = results;

  }

  return results;

}

hasCache.cache = {};

console.log( hasCache("foo") );
console.log( hasCache("foo") );
这里有一个活生生的例子

谢谢你的关注

您需要的是一个

而不是让缓存作为函数的参数,在任何地方都可用,甚至在函数之外

使用IIFE使您能够拥有一个保存缓存的“私有”变量。对于isntance:

var hasCache = (function() {

    var cache = {};

    return function(cacheKey) {
        if ( !cache.hasOwnProperty(cacheKey) ) {
            cache[cacheKey] = cacheKey;
        }
        return cache[cacheKey];
    }

})();

我还擅自修改了你的代码。你在那里发生了一些奇怪的事情。

@老板:不,不是。尽管你可能想道歉。你的口型很好,我以前用过。我的问题实际上是理解为什么将属性指定给函数是有效的。不确定这是否是一种反模式,但我正在尝试查找有关这一点的更多信息。JS中的函数是对象;)