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 に答える