在方法中访问Javascript对象属性

时间:2011-08-15 01:55:05

标签: javascript

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);
}

嗨,这个Card类得到另外两个对象作为它的参数。其中一个是styleAttr,它包含一个名为'width'的属性。除非我将此对象传递给constructCard,否则我无法访问styleAttr.width属性。以上示例有效。但如果我这样做:

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's中找不到的简单。

由于

2 个答案:

答案 0 :(得分: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);
    }
}

然后你就这样使用它:

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

答案 1 :(得分:0)

简单的旧原型继承没有错:

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_0 = new Card(..., ...)
card_0.constructCard();