2011-08-15 8 views
0
function Card(styleAttr, cardInfo) 
{ 
    //Attributes 
    this.styleAttr = styleAttr; 
    this.cardInfo = cardInfo; 

    //Functions 


    constructCard(this.styleAttr); 
} 

function constructCard(styleAttr) { 

    var cardCSS = { 
        'width':styleAttr.width, 
        'height':styleAttr.height, 
        'background-color':'black' 
        } 


    $('<div class="Card"></div>').appendTo('body').css(cardCSS); 
} 

こんにちは、このカードクラスは、他の2つのオブジェクトをパラメータとして取得します。それらの1つはstyleAttrで、 'width'という名前のプロパティが含まれています。このオブジェクトをconstructCardに渡さない限り、styleAttr.widthプロパティにアクセスすることはできません。上の例は動作します。しかし、私はやる場合は、この:メソッド内でJavascriptオブジェクトの属性にアクセスする

function constructCard() { 

    var cardCSS = { 
        'width': this.styleAttr.width, //Undefined 
        'height':styleAttr.height, 
        'background-color':'black' 
        } 


    $('<div class="Card"></div>').appendTo('body').css(cardCSS); 
} 

私は、わからないんだけど、私はそれがプロパティのアクセスできるようにするには、クラスへの関数constructCardをバインドしなければならないのか、私が通過するように強制していますので、他の言語のほとんどのコードオブジェクトは値を取得します。あるいは、グローバル変数にする必要がありますか?

私はMoz Docからキャッチしなかった単純なものでなければなりません。

おかげ

答えて

0

ナッシング:

var card_0 = new Card(..., ...) 
card_0.constructCard(); 
+0

お互いに、これはCの構文に近いので、私はそれを好む。 –

1

試してみてください。

function Card(styleAttr, cardInfo) 
{ 
    this.styleAttr = styleAttr; 
    this.cardInfo = cardInfo; 
    this.construct = function() { 
     var cardCSS = { 'width':this.styleAttr.width, 'height':this.styleAttr.height, 'background-color':'black' } 

     $('<div class="Card"></div>').appendTo('body').css(cardCSS); 
    } 
} 

そして、あなたはこのようにそれを使用します。次に

function Card(styleAttr, cardInfo) { 
    //Attributes 
    this.styleAttr = styleAttr; 
    this.cardInfo = cardInfo; 
} 

Card.prototype.constructCard = function() { 

    var cardCSS = { 
        'width': this.styleAttr.width, 
        'height': this.styleAttr.height, 
        'background-color':'black' 
        }; 


    $('<div class="Card"></div>').appendTo('body').css(cardCSS); 
} 

:昔ながらのプロトタイプ継承と間違っ

var card = new Card(styleAttr, cardInfo); 
card.construct(); 
+0

だから、これは2段階のオブジェクトの構築になりますようです。私はすべてがまだオブジェクトが作成されるので、単一の新しい呼び出しで一度設定したが、技術的に準備ができていない持っ目指しました。つまり、たとえ文書化されていても、オブジェクトを使用するために余分な手間がかかります。実際にあなたは私が右のコンストラクタ内でこの処理を行う必要がありますと言うかもしれないが、私は種類のそれはコンストラクタを膨満感のようなものだったので、機能に分離したかったです。私は実験する必要があります。 –

関連する問題