2012-07-07 25 views
1

我想知道如果我可以得到使用數組的對象屬性。我爲this.label [i] .xOffset獲得'undefine'值。有什麼建議麼?在javascript中的對象字面量數組

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

回答

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和我已將label更改爲Label並在構造函數外部/在全局範圍內this指的是默認全局對象window和在全球範圍this.someVarsomeVar是相同的,因爲window是默認的全局對象,並且默認情況下我們不需要使用它,因此我們可以使用window.document.getElementbyIddocument.getElementbyId instrad。

1

首先,有一個在你label功能相關的問題:

lbl.xOffset = this.width/2; 

這裏,this.widthundefined,因爲this是指你與new label()創建對象。但是,對象的xOffset屬性將等於NaN。並且這一行:

lbl.rText; 

什麼都不做。

1

我想這可能是概率:

在你的構造函數標籤()要設置X偏移和Y偏移,以「這個」寬「這」的高度,但「這個」沒有寬度/高度屬性,所以它們是未定義的。