【问题标题】:how to add a property to an object?如何为对象添加属性?
【发布时间】:2017-09-20 11:51:57
【问题描述】:

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

【问题讨论】:

  • 你的问题是什么?

标签: javascript


【解决方案1】:

试试这个

返回 obj.fullName = obj.firstName + " " + obj.lastName

【讨论】:

    【解决方案2】:

    向现有对象添加新属性:

    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

    【讨论】:

      【解决方案3】:

      使用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

      【讨论】:

        【解决方案4】:

        如果要在名称中添加空格,则需要进行字符串插值,如下所示:

        `${obj.firstName} ${obj.lastName}`
        

        并补充 Gaby 关于切换到 dot notation, obj.fullName

        的回答

        【讨论】:

          【解决方案5】:

          简单的设置:

          obj.fullName instead of  obj[fullName]
          

          或者

          obj['fullName']
          

          因为您的代码中的 fullName 是未定义的变量。所以JS提示错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-07-31
            • 2015-11-15
            • 1970-01-01
            • 1970-01-01
            • 2022-09-27
            • 1970-01-01
            • 1970-01-01
            • 2021-03-19
            相关资源
            最近更新 更多