【问题标题】:Javascript - Output return value of an object methodJavascript - 输出对象方法的返回值
【发布时间】:2015-12-30 22:36:51
【问题描述】:

新手提醒。我是 JavaScript 新手。爱它至今。我遇到了一些问题,希望有人能帮助我:

这是我在 .js 文件中的脚本:

function human(name, age, gender){
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.yearsToRetirement = function(){                  
          return 65 - this.age;

  };
}


var Steve = new human('Steve', 34, 'Male');
document.write(Steve.name + "  " + Steve.age + "  " + Steve.gender + Steve.yearsToRetirement);

但这是我的浏览器输出:

Steve 34 Malefunction (){ return 65 - this.age; }

正如您可能已经猜到的那样,我正在寻找一个“31”,我们看到function (){ return 65 - this.age; }

...什么给了?

非常感谢任何帮助。

【问题讨论】:

  • yearsToRetirement是一个对象的方法,所以你必须用Steve.yearsToRetirement()来调用它

标签: javascript object methods return


【解决方案1】:

你在这里得到yearsToRetirement作为一个函数对象,而不是运行它:

document.write(Steve.name + "  " + Steve.age + "  " + Steve.gender + Steve.yearsToRetirement);

相反,您需要调用该函数,如下所示:

document.write(Steve.name + "  " + Steve.age + "  " + Steve.gender + Steve.yearsToRetirement());

【讨论】:

    【解决方案2】:

    您可以通过getter 进行操作。然后,Steve.yearsToRetirement 工作正常。

    function human(name, age, gender){
      this.name = name;
      this.age = age;
      this.gender = gender;
      var _yearsToRetirement = 65 - this.age;
      Object.defineProperties(this, {
            yearsToRetirement: {
                get: function () {
                    return 65 - this.age;
                },
                enumerable: true
            }
        });  
    }
    
    
    var Steve = new human('Steve', 34, 'Male');
    document.write(Steve.name + "  " + Steve.age + "  " + Steve.gender + Steve.yearsToRetirement + "<br>");
    
    Steve.age = 40;
    document.write(Steve.name + "  " + Steve.age + "  " + Steve.gender + Steve.yearsToRetirement);

    【讨论】:

      【解决方案3】:

      因为 yearsToRetirement 是一个你想要执行的函数。试试这个

      var Steve = new human('Steve', 34, 'Male');
      document.write(Steve.name + " " + Steve.age + " " + Steve.gender + Steve.yearsToRetirement());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多