使用“快捷方式”功能给我一个“非法调用”错误

时间:2016-12-13 16:37:49

标签: javascript ecmascript-6 local-storage

我在Javascript ES6中使用此代码:

// Create a new object
var foo = new A();

// Create shortcuts to use localStorage faster
foo.set = window.localStorage.setItem;
foo.get = window.localStorage.getItem;

// Try to use localStorage 
foo.set('count', 1);

但是我得到了最后一行的“非法调用”,我不明白为什么。

知道怎么解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您正在更改此方法的上下文。使用Function#bindthis设置为localStorage

var foo = {};
undefined
foo.set = window.localStorage.setItem.bind(localStorage);
foo.get = window.localStorage.getItem.bind(localStorage);

// Try to use localStorage
foo.set('count', 1);
console.log(foo.get('count'));

或者,您可以创建一个调用localStorage函数的包装函数。

foo.set = (k,v) => window.localStorage.setItem(k,v)
foo.get = (k) => window.localStorage.getItem(k)