任何人都可以告诉正确的方法来形成这个代码并使用它

时间:2011-07-03 11:23:56

标签: javascript

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) 我觉得我写的代码是错的......意思是结构?

2 个答案:

答案 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灵活的最大原因之一。