如何向对象添加属性?

时间:2017-04-23 22:34:37

标签: javascript

给定一个具有“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;
}

4 个答案:

答案 0 :(得分:1)

使用obj.fullNameobj['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