我得到了下一个代码,其中一些 getter 和 setter 以这种方式完成,因此我可以隐藏参数。
// trackedWebsite: does not use the new to create the object trackedWebsite.
//Creates an object with private parameters only accessible by the getter
var trackedWebsite = function(url,extensions){
return {
//This returns the URL of the website
get get_URL() {
return url;
},
get get_Extensions(){
return extensions;
},
set set_Extensions(ext){
this.extensions = ext;
}
}
}
在某些时候,我想将信息保存在 localStorage 中称为网站的 trackedWebsite 数组中,因此我使用 JSON 对其进行解析:
localStorage.websites=JSON.stringify(websites);
最后在某个时候我再次加载所有网站:
function getAllWebsites(){
if (localStorage.websites === undefined){
return new Array();
}
return JSON.parse(localStorage.websites);
}
当我这样做时,get 函数可以正常工作,但我发现我收到的数组中的 trackedWebsites 不包括 setter。当我尝试使用它时,我得到: Uncaught TypeError: Object # has no method 'set_Extensions' 。为什么会这样?为什么 getter 能正常工作,而 setter 不能?
编辑:添加了调用 setter 的代码
websites[index].set_Extensions(extensions);
谢谢