0

我怎样才能做到这一点?

var people = Array();

people.push({
    name: "John",
    height_in_cm : 190,
    height_in_inches : this.height_in_cm * 0.39
});

这是行不通的。很明显,该对象尚未创建。有什么技巧可以让它工作吗?

4

1 回答 1

1

你可以先声明对象然后推送它:

var people = [];

var obj = {
  name: "John",
  height_in_cm : 190
};
obj.height_in_inches = obj.height_in_cm * .39;

people.push(obj);

根据您的情况,您还可以创建一个“Person”对象/类:

var person = (function personModule() {
  function Person(props) {
    this.name = props.name;
    this.height_in_cm = props.height_in_cm;
    this.height_in_inches = this.height_in_cm * .39;
  }

  Person.prototype = {...}; // public methods if necessary

  return function(props) {
    return new Person(props);
  }
}());

var people = [];
people.push(person({ name: 'John', height_in_cm: 190 }));

console.log(people[0].height_in_inches); //=> 74.1
于 2013-02-27T06:26:11.700 回答