1

我想知道是否可以使用数组获取对象属性。我得到 this.label[i].xOffset 的“未定义”值。有什么建议么?

function label() {
    var lbl = this;
    lbl.rText;
    lbl.precision =1;
    lbl.prefix = '';
    lbl.suffix = '';
    lbl.xOffset = this.width/2;
    lbl.yOffset = this.height*82/100    
}
this.NoOfneedles=2;
if (this.NoOfneedles > 1) {
    this.label = [];
    for (i=0;i<this.NoOfneedles;i++) {
        this.label[i]=new label();
        alert("label xOffset:"+this.label[i]+this.label[i].xOffset);
    }
}
4

3 回答 3

1

首先,您的label功能存在问题:

lbl.xOffset = this.width/2;

在这里,this.widthis undefined,因为this是指您使用 创建的对象new label()。但是,xOffset对象的属性将等于NaN。而这一行:

lbl.rText;

什么也没做。

于 2012-07-07T22:07:49.753 回答
1

我认为这可能是问题:

在您的构造函数 label() 中,您将 xOffset 和 yOffset 设置为“this”宽度和“this”高度,但“this”没有宽度/高度属性,因此它们未定义。

于 2012-07-07T22:13:54.667 回答
0

您的label对象没有widthheight属性,并且其他人已经说过了,但是如果您只是在构造函数中定义widthheight,那么它可以写成如下

function Label() {
   var lbl = this;
   lbl.width=window.outerWidth;
   lbl.height=window.outerHeight;
   lbl.precision =1;
   lbl.prefix = '';
   lbl.suffix = '';
   lbl.xOffset = lbl.width/2;
   lbl.yOffset = lbl.height*82/100    
}

this.NoOfneedles=2;
if (this.NoOfneedles > 1){
    this.label = [];
    for (i=0;i<this.NoOfneedles;i++){
        this.label[i]=new Label();
        alert ("label xOffset:"+this.label[i].xOffset);
    }
}

请记住,这指的是当前对象,并且您this.width/2;在构造函数内部使用,所以this=Label我已经将labeltoLabel和构造函数外部 / 全局范围内this指的是默认全局对象window和全局范围内this.someVar,并且someVar是相同的,因为window是默认全局对象和 by默认我们不需要使用它,所以我们可以使用document.getElementbyIdinstrad of window.document.getElementbyId.

于 2012-07-07T22:21:10.993 回答