【问题标题】:Unable to find how "undefined" is getting printed in Example无法在示例中找到如何打印“未定义”
【发布时间】:2017-11-29 08:13:00
【问题描述】:

我有一个简单的例子,我使用构造函数来创建对象并打印——

  1. 对象
  2. 通过函数命名属性。

但是,连同我收到的 2 个项目 undefined 也打印出来了。我不知道这是如何在结果中打印出来的。请有人帮助了解这到底是怎么回事undefined 也被打印为结果!

<html>
    <head></head>
    <body> 
        <script>
            var alpha = function(name, age) {
                this.name = name;
                this.age = age; 
                this.printName = function() {
                    console.log(this.name);
                }
            };

            var obj1 = new alpha("Jane", 23);
 
            console.log(obj1);
            console.log(obj1.printName());

        </script> 
    </body> 
</html> 

【问题讨论】:

  • .printName 什么都不返回,这就是为什么它被评估为undefined,就这么简单。请记住,“打印/记录”并不意味着“返回”。

标签: javascript function object constructor


【解决方案1】:

请有人帮助理解这个“未定义”到底是如何被打印为结果的!

您将打印undefined 作为结果,因为方法this.printName 没有返回任何内容,这会提示Developer Tools console 在调用该方法时打印实际结果后打印undefined

解决方法是返回值而不是打印。

var alpha = function(name, age) {
  this.name = name;
  this.age = age; 
  this.printName = function() {
    return this.name;
  }
};

var obj1 = new alpha("Jane", 23);

console.log(obj1);
console.log(obj1.printName());

【讨论】:

    【解决方案2】:

    但是,我得到未定义的 2 个项目也被打印出来。 我不知道结果是如何打印出来的

    这是console.log返回值

    printName 正在通过 console.log 正确打印 Jane

    您可以将printName 方法更改为

    this.printName = function(){
        return this.name;
    }
    

    演示

    var alpha = function(name, age) {
      this.name = name;
      this.age = age;
      this.printName = function() {
        return this.name;
      }
    };
    
    var obj1 = new alpha("Jane", 23);
    
    console.log(obj1);
    console.log(obj1.printName());

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2016-02-07
      相关资源
      最近更新 更多