访问声明中的Javascript对象属性

时间:2013-08-19 10:45:44

标签: javascript

我正在尝试创建一个包含三个字段的简单JavaScript对象

  1. 姓名
  2. FName参数
  3. FullName
  4. 我做的是这个

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

    但它不起作用。

2 个答案:

答案 0 :(得分: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'
    });

答案 1 :(得分:1)

不是将全名设为字段,而是将其声明为方法 -

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

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

然后 -

xyz.fullname();

会给你全名。

Live Demo

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

从方法访问属性时,方案会更改。在这里,您可以使用this来引用当前对象,即xyz。因此,当您调用此方法时,this将引用xyz,此时将定义其属性。