Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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,我需要包装localStorage的setItem,getItem和removietem方法,这样我就可以编写这样的东西了 local.set('foo', 'bar'); // equivalent to localStorage.setItem('foo', 'bar') 我以前做得很好,很简单 local.set = localStorage.setItem 在我知道之前。所以我把代码改成了这个 local.set = function() { return localStorage.

我需要包装
localStorage
setItem
getItem
removietem
方法,这样我就可以编写这样的东西了

local.set('foo', 'bar'); // equivalent to localStorage.setItem('foo', 'bar')
我以前做得很好,很简单

local.set = localStorage.setItem
在我知道之前。所以我把代码改成了这个

local.set = function() { return localStorage.setItem(arguments) };
但是现在我得到了一个错误
NS\u error\u XPC\u NOT\u ough\u ARGS:参数不足
。我做错了什么?

试试这个:

local.set = function() { return localStorage.setItem.apply(localStorage, arguments) };
或者为了与旧浏览器兼容,您需要将
参数
转换为数组:

local.set = function() {
    return localStorage.setItem.apply(localStorage, [].slice.call(arguments));
};
您的方法是将
参数
类似数组的对象作为唯一的参数传递给
localStorage.setItem()
,这意味着这样做:

localStorage.setItem(['foo', 'bar']);     // wrong - one argument
与此相反:

localStorage.setItem('foo', 'bar');       // right - two arguments

使用允许您使用数组(或类似数组的对象,尽管如上所述,较旧的浏览器需要实际的数组)指定应传递给要调用的函数的各个参数。

@nnnnnn谢谢,它可以工作!把它作为答案贴出来,好吗?