2011-11-04 83 views
4

我想創建一個功能的選項。我相信我必須使用對象,但目前失敗。通過選項我的意思是這樣的:Javascript對象的功能與選項

insertButton({ 
    settings:{ 
     value1:'Some text'  
    } 
}); 

function insertButton(settings){ 
    settings = new Object();  
    document.write(settings.value1); 
} 

顯然,不會工作,但我試圖展示我的意思。也許有人可以幫忙。

我在問,因爲現在我有簡單的功能,我可以通過嚴格的順序值。有了選項,我想在函數中變量順序不可靠。例如:

function insertButton2(value1,value2,value3){ 
    document.write(value1); 
    document.write(value2); 
    document.write(value3); 
} 

insertButton2('a','','c'); //empty commas to skip value2 

留下空的逗號以確保'c'是value3對我來說不方便。這就是爲什麼我想嘗試對象,選項。

Thx。

回答

7

你只要進入函數的對象與所需的鍵/值:

function parameterify(params) { 
    console.log(params.isAwesome); 
} 

parameterify({ 
    isAwesome : true 
}); 
//logs true 

你有兩個mistaknes:

  1. 沒有名字的JS參數,所以{settings:{}}將傳遞一個對象與設置的鍵(使的功能裏面,你必須做settings.settings

  2. 你重新聲明settings在函數頂部(settings = new Object();),不管你傳入什麼,都會覆蓋它。作爲一個方面說明,new Object是玄乎 - 對象字面{}的方式冷卻器

+0

哦,我的上帝,簡單? – devjs11

+0

@亞歷克斯,那簡單!不是JavaScript真棒? – Zirak

+0

這是!我很高興我在正確的道路上。感謝您快速解決問題。謝謝大家,我看到所有回覆或多或少都有相同的工作。 @Zirak,如果你不介意的快速問題。有沒有常用的方法來將對象轉換爲字符串? – devjs11

2

那麼你覆蓋settings在你的函數的第一行空白對象,採取出來,它會工作...

編輯:對不起早期去除設置對象從參數應該只是

insertButton({ 
     value1:'Some text'  
}); 
+0

如果我刪除行,你怎麼說,那麼它仍然返回undefined。 – devjs11

+0

你改變了你的問題......堅持。 – JaredMcAteer

+0

我的第二個例子就是幫助解釋我想要的內容。對不起,如果這是令人困惑。 – devjs11

1

試試這個

function insertButton(settings){ 
    document.write(settings.value1); 
} 

insertButton({ 
    value1:'Some text'  
});