我正在尝试创建一个包含三个字段的简单JavaScript对象
我做的是这个
var xyz = {
name: 'ahsan',
fname: 'ashfaq',
fullname : xyz.name + xyz.fname
};
但它不起作用。
答案 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();
会给你全名。
您无法在定义对象的同一块中访问对象的属性。在您的示例中,JavaScript将查找名为xyz
的已定义对象。由于此时此对象不可用,因此您只能获得undefined
。
从方法访问属性时,方案会更改。在这里,您可以使用this
来引用当前对象,即xyz
。因此,当您调用此方法时,this
将引用xyz
,此时将定义其属性。