以编程方式从构造函数中检索属性名称

时间:2012-07-31 19:35:14

标签: javascript local-storage

我正在尝试学习javascript,而我正试图找出一个项目的本地存储空间。但首先我相信我需要以编程方式从我的Team构造函数构建密钥。

 var Team = function(team, manager, cell, add1, add2, city, st, zip, sponsor) {
  this.team = team;
  this.manager = manager;
  this.cell = cell;
  this.add1 = add1;
  this.add2 = add2;
  this.city = city;
  this.st = st;
  this.zip = zip;
  this.sponsor = sponsor;
  };

这是我构建的一个表单,现在我想构建localstorage。这是我失败的尝试:

 function saveTeam() {
 for (var i = 0; i < Team.length; i++) {
 localStorage["league." + i "." + javascriptNameOfProperty ] = $('#'+ javascriptNameOfPropertyName + ').val() };

或类似的东西。我尝试了“属性”,“密钥”和其他我试过的不适用于javascriptNameofProperty。当然,一旦我得到那个数字,那么我必须找出本地存储,当然。

3 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用对象文字而不是构造函数(我没有看到您发布的代码上的构造函数的任何原因,并且您应该使用new实例化对象,都没有)。考虑使用它(假设您传递给Team的所有变量都已定义):

var team = {
    team : team,
    manager : manager,
    cell : cell,
    add1 : add1,
    add2 : add2,
    city : city,
    st : st,
    zip : zip,
    sponsor : sponsor
}

可以使用以下代码进行迭代:

for(var key in team) {
    localStorage["league." + key] = team[key];
}

我认为这并不完全符合原始代码的要求,但目前尚不清楚您是否拥有多个团队,如何创建团队以及如何使用这些团队。我希望这会有所帮助。

答案 1 :(得分:1)

团队是一个函数,而不是数组。

我会假设你有一系列的团队。

您需要使用for in循环:

var teams = [ ... ];

for (var i = 0; i < teams.length; i++) {
    for (var key in team) {
        localStorage["league." + i + "." + key] = $('#' + key).val()
    }
}

答案 2 :(得分:1)

为了与其他人建立一点点关系,你也可以这样做。

var Team = function(team, manager, cell, add1, add2, city, st, zip, sponsor) {
  this.team = team;
  this.manager = manager;
  this.cell = cell;
  this.add1 = add1;
  this.add2 = add2;
  this.city = city;
  this.st = st;
  this.zip = zip;
  this.sponsor = sponsor;
};

Team.prototype.save = function () { 
  for ( var prop in this )
  { 
    if (this.hasOwnProperty(prop))
      console.log('%s => %s', prop, this[prop]);
      // your localStorage saving logic goes here
  }
};

var t = new Team('vteam','vmanager','vcell','vadd1','vadd2','vcity','vst','vzip','vsponors');

t.save();

这将只保存Team对象的属性(在团队内部定义的任何内容。 prop