分享
三行代码  ›  专栏  ›  技术社区  ›  kevin

对象的原型方法只返回函数定义,不执行。

  •  0
  • kevin  · 技术社区  · 1 年前

    我在回顾创建和“实例化”对象的原型方法时遇到了一个问题。当我将此代码放入浏览器控制台进行测试时,如果我输入:

    nUser1.myAge()  // only the function definition is returned, doesn't actually execute.
    

    我想也许我需要一个关于这个方法的返回语句,但是这没有什么区别。另外,在我以前的(成功的)实践尝试中,它们不需要返回语句来返回各自方法的输出。

    我已经看了好几遍代码,并将其与我的其他示例进行了比较,没有什么能脱颖而出。我觉得问题就在我的鼻子下面,但我看不见。

    function normUserCreator(name, age, employed) {
      this.name = name;
      this.age = age;
      this.employed = employed;
    };
    
    normUserCreator.prototype.myName = function() {
      console.log("My name is: " + this.name + ".")
    };
    normUserCreator.prototype.myAge = function() {
      console.log("My age is : " + this.myAge + ".")
    };
    normUserCreator.prototype.employed = function() {
      if (this.employed === true) {
        console.log("I am employed");
      } else if (this.employed === false) {
        console.log("I am not employed");
      }
    };
    
    var nUser1 = new normUserCreator('Kevin', 26, false);
    
    1 回复  |  直到 1 年前
        1
  •  3
  •   brk    1 年前

    错误在这一行

    console.log("My age is : " + this.myAge + ".")
    

    它基本上是在自称,用 this.age

    也可以更换 if (this.employed === true) 具有 if (this.employed) 同样 else if 条件

    function normUserCreator(name, age, employed) {
      this.name = name;
      this.age = age;
      this.employed = employed;
    };
    
    normUserCreator.prototype.myName = function() {
      console.log("My name is: " + this.name + ".")
    };
    normUserCreator.prototype.myAge = function() {
      console.log("My age is : " + this.age + ".")
    };
    normUserCreator.prototype.employed = function() {
      if (this.employed) {
        console.log("I am employed");
      } else if (!this.employed) {
        console.log("I am not employed");
      }
    };
    
    var nUser1 = new normUserCreator('Kevin', 26, false);
    nUser1.myAge()