【问题标题】:Parameter as object item?参数作为对象项?
【发布时间】:2016-04-26 07:37:54
【问题描述】:

好吧,这里的菜鸟问题,但我正在尝试做的事情看起来像这样:

var statShow = function(stat) {
  playerSats.stat = stat;
  console.log("Your "+stat+" is "+this.(this.stat)+"!");
};
playerStats.statShow = statShow;
playerStats.statShow("intel");

我正在尝试获取函数的参数,因为项目要在对象中检索,但是当我简单地键入时:

this.stat

它搜索一个名为 stat 的项目(在对象 playerSats 中),而不是一个名为 intel 的项目(这是我的参数)。请帮忙!

附:这是我的对象:

var playerStats = {
  playerLvl: 1,
  power: strength,
  intel: intelligence,
  sped: speed
};

【问题讨论】:

    标签: javascript function object methods this


    【解决方案1】:

    试试这个:

     var statShow = function(stat) {
          console.log("Your "+stat+" is "+this[stat]+"!");
     };
     playerStats.statShow = statShow;
     playerStats.statShow("intel");
    

    此外,您为什么要这样做:playerSats.stat = stat;

    【讨论】:

    • 这是我显示统计数据的方法。
    【解决方案2】:

    您可以使用 object[propertyName] 样式语法访问 javascript 对象的属性。

    要在您当前的设置中使用它就足够了

    var statShow = function(stat) {
      console.log("Your "+stat+" is "+this[stat]+"!");
    };
    
    playerStats.statShow = statShow;
    playerStats.statShow("intel");
    

    【讨论】:

      【解决方案3】:

      只需对对象使用括号表示法:

      var statShow = function(stat) {
        this[stat] = stat;
        console.log("Your "+stat+" is "+this[stat]+"!");
      };
      playerStats.statShow = statShow;
      playerStats.statShow("intel");
      

      不过,我很困惑您为什么要这样做,因为您只是将 property namevalue 设置为相同的值...这意味着您甚至看不到差异。

      【讨论】:

      • 我也想知道 this[stat] = stat,在这种情况下,您会将 stat 设置为 stat,不(或者更好地说 this["intel"] = "intel") ?我在答案中省略了它,因为我认为这是错误的方法;)
      • 是的,我看到了,这是真的,但我发现添加它然后评论奇怪之处更令人心酸。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2014-06-28
      • 2011-06-23
      相关资源
      最近更新 更多