1

Javascript で OO を実行しようとしていますが、C++ と Ruby から来ています。オブジェクトを 1 つ作成することはできましたが、内部にオブジェクトをネストするのは少し面倒です。

function Model()
{
   //...
}

function Player(props)
{
   var props = {
      // ...
   }

   var model = new Model(props); // I've tried 'this.model = new Model() as well
}

var props = {
   // ...
}
var player = new Player(props);

プレーヤーは正常に作成されますが、オブジェクトをネストしようとすると失敗します。私は何を間違っていますか。

4

1 に答える 1

2

あなたは近かった。javascript でオブジェクトを「seudo 拡張」するためのはるかに優れた方法があります。jQuery.extendは 1 つの可能な方法です。プロパティをチェックする独自のメソッドを作成することもできます。あなたにとって最大の故障propsは、Player関数の上書きだったと思います。

  • 機能付きthisがカギ
  • 関数は JavaScript の唯一のスコープであるため、変数の命名には注意してください
  • var a = {}オブジェクト リテラルと関数の違いを理解することが重要var a = new Method();です。しかし、あなたはそれをうまくやっているようです。

コード

function Model(data)
{
   this.Name = data.Name;
   this.Other = data.Other;
}

function Player(props)
{
   var privateProps = {
       Name: 'testing'
   };
   privateProps.Other = props.Other;
   this.model = new Model(privateProps); // I've tried 'this.model = new Model() as well
}

var props = {
    Other: 'Other'
}
var player = new Player(props);

</p>

于 2012-09-26T14:11:05.273 に答える