gpt4 book ai didi

javascript - 如何包装 localStorage 方法

转载 作者:行者123 更新时间:2023-11-30 17:42:26 25 4
gpt4 key购买 nike

我需要包装 localStoragesetItemgetItemremoveItem 方法,这样我就可以编写类似这个

local.set('foo', 'bar'); // equivalent to localStorage.setItem('foo', 'bar')

我以前做得很好很简单

local.set = localStorage.setItem

在我了解到 Firefox doesn't like this approach 之前.所以我把我的代码改成了这个

local.set = function() { return localStorage.setItem(arguments) };

但现在我得到一个错误 NS_ERROR_XPC_NOT_ENOUGH_ARGS: Not enough arguments。我做错了什么?

最佳答案

试试这个:

local.set = function() { return localStorage.setItem.apply(localStorage, arguments) };

或者为了与旧版浏览器兼容,您需要将arguments 转换为数组:

local.set = function() {
return localStorage.setItem.apply(localStorage, [].slice.call(arguments));
};

您的方式是将arguments 类数组对象作为唯一的参数传递给localStorage.setItem(),这意味着它就像这样做:

localStorage.setItem(['foo', 'bar']);     // wrong - one argument

而不是这个:

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

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

关于javascript - 如何包装 localStorage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com