为什么我的对象的属性没有记录到控制台?
Why aren't the properties of my object logged to the console?
下面,我构建了一个名为 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);
您遇到范围界定问题:
var callPerson = function(person /* argument needs to be here */){
console.log("Hey " + person.firstName + " " + person.lastName);
}
所以person
是函数,不是对象lovely
。
次代码风格备注:类一般都是大写,就是为了避免这种混淆。请改用 function Person () {/**/}
。
它没有被记录,因为在 callPerson
中,变量 person
引用函数(构造函数)person
,因为这个名称在功能。这意味着您指的不是某个特定实例,而是 class。将一个实例作为参数传递不会改变这一点,因为函数不需要它;实际上,传递的参数不以任何方式使用。
将此视为尝试记录 class 属性,而不是一个实例。
按以下方式更改 callPerson
应该可以解决您的问题。请注意,现在访问的字段来自参数 p
.
var callPerson = function(p){
console.log("Hey " + p.firstName + " " + p.lastName);
}
lovely 参数存储在哪 应该有参数存储和使用
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);
下面,我构建了一个名为 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);
您遇到范围界定问题:
var callPerson = function(person /* argument needs to be here */){
console.log("Hey " + person.firstName + " " + person.lastName);
}
所以person
是函数,不是对象lovely
。
次代码风格备注:类一般都是大写,就是为了避免这种混淆。请改用 function Person () {/**/}
。
它没有被记录,因为在 callPerson
中,变量 person
引用函数(构造函数)person
,因为这个名称在功能。这意味着您指的不是某个特定实例,而是 class。将一个实例作为参数传递不会改变这一点,因为函数不需要它;实际上,传递的参数不以任何方式使用。
将此视为尝试记录 class 属性,而不是一个实例。
按以下方式更改 callPerson
应该可以解决您的问题。请注意,现在访问的字段来自参数 p
.
var callPerson = function(p){
console.log("Hey " + p.firstName + " " + p.lastName);
}
lovely 参数存储在哪 应该有参数存储和使用
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);