2013-01-22 99 views
0

我有這樣的代碼:從變量函數獲取屬性?

var rect2 = new drawRect({ 
     h: 100, 
     w: 100, 
     x: 280, 
     y: 20, 
     colour: '8CB5CF', 
     name: 'Office 2' 
} 

是否有可能在讀,我傳遞給drawRect中的屬性? 我的第一個想法是:

alert(rect2.h) 

但導致undefined,沒想到它真的工作,但我不知道該怎麼處理這個。

我相當新的JavaScript。謝謝。

編輯:對不起這裏的drawRect:

function drawRect(rectOptions){ 
     var ctx = document.getElementById('canvas').getContext('2d'); 
     ctx.fillStyle = rectOptions.colour; 
     ctx.fillRect(rectOptions.x,rectOptions.y,rectOptions.h,rectOptions.w); 
     ctx.font = '12px sans-serif'; 
     ctx.fillText(rectOptions.name, rectOptions.w + rectOptions.x, rectOptions.h  + rectOptions.y); 
    } 

這裏是全碼:Full code

+2

你能提供'drawRect'的代碼?這可能會提供更多有關可實現項目的信息。 –

+0

你從哪裏得到drawRect? JavaScript文件中的另一個函數是什麼? – Miguel

+0

你的代碼被破壞了,我們無法猜測drawRect在做什麼而不看drawRect定義。 – mpm

回答

0

裏面的drawRect功能,你可以添加一行到option屬性添加到由drawRect構造的對象的。

function drawRect(rectOptions) { 
    this.options = rectOptions; 
    //... 
} 

那麼你可以做

var rect2 = new drawRect({ /* ... */ }); 
alert(rect2.options.h); 

或者,你可以有drawRect返回傳遞給它的選項。

function drawRect(rectOptions) { 
    //... 
    return rectOptions; 
} 

那麼你可以做,如您最初試圖,

alert(rect2.h); 
+0

正是我需要的!我意識到選項屬性的工作原理。謝謝,我很感激。 – Jerrod

+0

@Jerrod相關知識;)一旦15分鐘的時間到了,您可以通過按下左側的綠色複選標記來標記最能幫助您的答案。 –

0
var rect2 = new drawRect({ 
     h: 100, 
     w: 100, 
     x: 280, 
     y: 20, 
     colour: '8CB5CF', 
     name: 'Office 2' 
}) 
function drawRect(rectOptions){ 
     //your code 
     return rectOptions;//you have to return the value 
    } 

alert(rect2.h);//alerts 100 

link to jsfiddle