使用 this 关键字后,为什么 JavaScript 没有意识到我已经指定了一个 属性?
After using the this keyword, why doesn't JavaScript realise that I've specified a property when I have?
我有一个看起来像这样的对象:
let john = {
firstName: 'John',
lastName: 'Smith',
fullname: `${this.firstName} ${this.lastName}`,
height: 1.95,
mass: 92,
calcBMI: function () {
this.BMI = this.mass / this.height ** 2;
return this.BMI
}
}
每当我查看 fullName
属性 时,它只是 return 和 undefined
。但是当我在对象中手动输入它时(即 fullName: 'John Smith'
),我得到了预期的结果:John Smith.
我查看了 MDN 网络文档,但只找到了几句话,说明如果激活严格模式,this.myProperty
等表达式如何可以 return 未定义,我的情况就是如此。但是即使停用了,还是出现了同样的问题
谁能帮帮我?
P.S:我不是专业的coder,所以可能是我傻了。
编辑:我如何调用 fullName 以及对我的对象的另一个疑问
如果您想知道,我正在将 fullName
属性 记录到控制台。
还有一件事 - 您可能已经注意到对象中的 calcBMI
函数并且它还使用了 this
关键字。我想知道为什么它在里面工作而不在外面工作。
this
的范围是当前正在执行的函数调用。如果它用在对象字面量的值中,它的值将与字面量之外的值相同。它不引用正在定义的当前对象。
要在 fullname
中使用 this
,您可以将其改为函数:
fullname: function() {
return `${this.firstName} ${this.lastName}`;
}
我有一个看起来像这样的对象:
let john = {
firstName: 'John',
lastName: 'Smith',
fullname: `${this.firstName} ${this.lastName}`,
height: 1.95,
mass: 92,
calcBMI: function () {
this.BMI = this.mass / this.height ** 2;
return this.BMI
}
}
每当我查看 fullName
属性 时,它只是 return 和 undefined
。但是当我在对象中手动输入它时(即 fullName: 'John Smith'
),我得到了预期的结果:John Smith.
我查看了 MDN 网络文档,但只找到了几句话,说明如果激活严格模式,this.myProperty
等表达式如何可以 return 未定义,我的情况就是如此。但是即使停用了,还是出现了同样的问题
谁能帮帮我?
P.S:我不是专业的coder,所以可能是我傻了。
编辑:我如何调用 fullName 以及对我的对象的另一个疑问
如果您想知道,我正在将 fullName
属性 记录到控制台。
还有一件事 - 您可能已经注意到对象中的 calcBMI
函数并且它还使用了 this
关键字。我想知道为什么它在里面工作而不在外面工作。
this
的范围是当前正在执行的函数调用。如果它用在对象字面量的值中,它的值将与字面量之外的值相同。它不引用正在定义的当前对象。
要在 fullname
中使用 this
,您可以将其改为函数:
fullname: function() {
return `${this.firstName} ${this.lastName}`;
}