【问题标题】:Why aren't the properties of my object logged to the console?为什么我的对象的属性没有记录到控制台?
【发布时间】:2015-02-22 14:05:14
【问题描述】:

下面,我构建了一个名为 person 的对象,我想将它的名字和姓氏(结合一些字符串)记录到控制台,但它不起作用。如果有人可以帮助我,我会很高兴。先感谢您。

function person(last, first, birth, marriage) {
this.lastName = last;
this.firstName = first;
this.birthDate = birth;
this.married = marriage;
}

var lovely = new person("Doughnut", "Glazed", "7-8-1990", true);

var callPerson = function(){
console.log("Hey " + person.firstName + " " + person.lastName);
}

callPerson(lovely);

【问题讨论】:

  • 感谢大家的帮助!

标签: javascript logging properties console


【解决方案1】:

您有一个范围界定问题:

var callPerson = function(person /* argument needs to be here */){
    console.log("Hey " + person.firstName + " " + person.lastName);
}

所以person 是函数,而不是对象lovely


次要代码风格备注:类通常大写,正是为了避免这种混淆。请改用function Person () {/**/}

【讨论】:

    【解决方案2】:

    它没有被记录,因为在callPerson 中,变量person 引用了函数(构造函数)person,因为这个名称在函数的范围内没有被覆盖。这意味着您指的不是某个特定的实例,而是类。将一个实例作为参数传递并不会改变这一点,因为函数并不期望它;实际上,传递的参数不以任何方式使用。

    将此视为尝试记录一个类属性,而不是一个实例的。

    通过以下方式更改callPerson 应该可以解决您的问题。请注意,现在访问的字段来自参数p

    var callPerson = function(p){
        console.log("Hey " + p.firstName + " " + p.lastName);
    }
    

    【讨论】:

      【解决方案3】:

      可爱的参数在哪里存储它应该有一个参数来存储和使用

      function person(last, first, birth, marriage) {
      this.lastName = last;
      this.firstName = first;
      this.birthDate = birth;
      this.married = marriage;
      }
      
      var lovely = new person("Doughnut", "Glazed", "7-8-1990", true);
      
      var callPerson = function(obj){
      console.log("Hey " + obj.firstName + " " + obj.lastName);
      }
      
      callPerson(lovely);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2020-03-06
        • 2020-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多