给定一个具有“firstName”属性和“lastName”属性的对象,“addFullNameProperty”返回一个“fullName”属性,其值为一个字符串,其名称和姓氏用空格分隔。
var person = {
firstName: 'Jade',
lastName: 'Smith'
};
addFullNameProperty(person);
console.log(person.fullName); // --> 'Jade Smith'
我的代码:
function addFullNameProperty(obj) {
// your code here
obj[fullName] = obj.firstName + obj.lastName;
}
答案 0 :(得分:1)
使用obj.fullName
或obj['fullName']
但更正确的解决方案是
function addFullNameProperty(obj) {
// your code here
Object.defineProperty(obj, 'fullName', {
get: function(){
return this.firstName + ' ' + this.lastName;
},
configurable:false
});
}
var person = {
firstName: 'Jade',
lastName: 'Smith'
};
addFullNameProperty(person);
console.log(person.fullName); // --> 'Jade Smith'
person.firstName = "Mike";
console.log(person.fullName); // --> 'Mike Smith'

这样您的对象将始终返回正确的fullName
。
答案 1 :(得分:1)
只是简单的设置:
obj.fullName instead of obj[fullName]
或者
obj['fullName']
因为代码中的fullName是未定义的变量。所以JS警报错误。
答案 2 :(得分:0)
如果要在名称中添加空格,则需要执行字符串插值,如下所示:
`${obj.firstName} ${obj.lastName}`
并补充了Gaby关于切换到点符号的回答,obj.fullName
答案 3 :(得分:0)
将新属性添加到现有对象:
const person = {
firstName: 'Jade',
lastName: 'Smith'
};
person.fullName = `${person.firstName} ${person.lastName}`;
同样如下:
person['fullName'] = `${person.firstName} ${person.lastName}`;
或使用方法:
const person = {
firstName: 'Jade',
lastName: 'Smith',
fullName(){
return `${this.firstName} ${this.lastName}`;
}
};
person.fullName(); // Jade Smith
您也可以使用defineProperty