12

可能重复:
对象字面量声明中的自引用

我在 JS 中有一些简单的对象,比如这个例子:

var object = {
 firstname : 'john',
 lastname : 'paul',
 wholename : firstname + lastname
}

那么这个简单的事情是行不通的;john 和 paul 在全名中未定义,因此我尝试使用仅在执行 function 时才有效的 'this' 运算符(getWholeName(){return this.firstname+this.lastname} )。但是如果我想使用变量而不是函数,我该怎么办?我也试过object.firstname + object.lastname,但它不起作用。

4

2 回答 2

12

无法引用该对象,但您可以动态添加属性:

var object = { 
    firstname : 'john', 
    lastname : 'paul'
};

object.wholename = object.firstname + object.lastname;

编辑:

为什么不将它包装在一个函数中呢?

var makePerson = function (firstname, lastname) {
    return {
        firstname: firstname,
        lastname: lastname,
        wholename: firstname + lastname  // refers to the parameters
    };
};

var object = makePerson('john', 'paul');
于 2012-12-25T22:38:33.740 回答
3

在 Javascript 中,每个函数都是一个对象。您应该将 Object 的构造函数声明为如下函数:

function person(firstname,lastname)
{
this.firstname=firstname;
this.lastname=lastname;

this.wholeName=wholeName;

 //this will work but is not recommended.
 function wholeName()
 {
 return this.firstname+this.lastname;
 }
}

你也可以通过原型化来为你的对象添加额外的方法,这是推荐的做事方式。更多信息在这里:

http://www.javascriptkit.com/javatutors/proto.shtml

于 2012-12-25T22:45:52.583 回答