1

我正在尝试制作一个具有三个字段的简单 JavaScript 对象

  1. 姓名
  2. 名称
  3. 全名

我做的是这个

var xyz = {
          name: 'ahsan',
          fname: 'ashfaq',
          fullname : xyz.name + xyz.fname

      };

但它不工作。

4

2 回答 2

5

在创建内联对象期间,您不能引用脚下的地毯。如果你真的想要一个表现出这种行为的属性,那么创建一个类或在单独的语句中进行赋值:

var xyz = {
      name: 'ahsan',
      fname: 'ashfaq',
      fullname : undefined
   };
xyz.fullname = xyz.name + xyz.fname;

类实现:

function XYZ(o) {
    this.name = o.name;
    this.fname = o.fname;
    this.fullname = o.fname + o.name;
}

var xyz = new XYZ({
        name: 'ahsan',
        fname: 'ashfaq'
    });
于 2013-08-19T10:58:21.573 回答
1

与其将全名设为字段,不如将其声明为方法 -

var xyz = {
    name: 'ahsan',
    fname: 'ashfaq',

    // Declare a method to return the full name
    fullname : function () {
        return this.name + this.fname;
    }
};

进而 -

xyz.fullname();

会给你全名。

现场演示

您不能在定义它的同一块中访问对象的属性。在您的示例中,JavaScript 将查找名为xyz. 由于此时该对象不可用,因此您只会得到undefined.

当您从方法访问属性时,场景会发生变化。在这里,您可以使用this来引用当前对象,即xyz. 因此,当您调用此方法时,this将引用xyz,此时将定义其属性。

于 2013-08-19T10:47:44.317 回答