var hash = {
func1: function(){
},
return {
contains: function(key) {
return keys[key] === true;
},
add: function(key) {
if (keys[key] !== true){
keys[key] = true;
}
}
}
任何人都可以解释一下这里的回报是如何运作的......
我可以致电hash.contains(key)
我觉得我写的代码是错的......意思是结构?
答案 0 :(得分:2)
我不确定为什么你需要这样的哈希对象,因为Javascript语言已经内置了哈希对象,而且它们会更快。你可以使用普通的Javascript:
来做到这一点var team = {};
team.sport = "baseball";
team.city = "San Francisco";
team.name = "San Francisco Giants";
team.lastChampionship = 2010;
team.currentStanding = 1;
if (team.sport) { // contains test
alert("This team plays " + team.sport);
}
或者这个:
var playerNames = {};
playerNames["Zito"] = "pitcher";
playerNames["Lincecum"] = "pitcher";
playerNames["Cain"] = "pitcher";
playerNames["Sandoval"] = "infielder";
playerNames["Posey"] = "catcher";
if (playerNames["Posey"]) { // contains test
alert("Posey is a " + playerNames["Posey"]);
} else {
alert("No player by the name of Posey");
}
答案 1 :(得分:2)
var hash = (function () {
var keys = {};
return {
contains: function (key) {
return keys[key] === true;
},
add: function (key) {
if (keys[key] !== true) {
keys[key] = true;
}
}
}
})();
这就是我认为你想要实现的目标。从您的代码中我认为您正在尝试使用add和contains方法创建一个哈希对象,以检查密钥var中是否存在密钥,还使其成为受保护的变量。
上面的代码所做的是创建一个包含keys变量(一个对象)的闭包,并返回一个包含和添加两个方法的对象。
您可以在此处阅读有关闭包的更多信息http://jibbering.com/faq/notes/closures/。闭包是Javascript灵活的最大原因之一。