我不完全知道如何問這個問題,所以我會用例子做。說我有這樣的設置:功能與對象的構造
var x = function() {
console.log('YAY!');
};
x.test0 = 0;
x.test1 = 1;
x.test2 = "hello world";
如預期那樣工作:
x(); // YAY!
x.test0 // 0
x.test2 // "hello world"
現在,我想知道如何設置了先用一個對象開始。我嘗試使用構造函數添加函數,但這不起作用。
var x = {
test0 : 0,
test1 : 1,
test2 : 'hello world',
constructor: function() {
console.log('YAY!');
}
}
x(); // object is not a function
x.test0 // 0
x.test2 // "hello world";
我試過其他瘋狂的東西,但似乎沒有任何工作。
任何想法?或者我堅持這樣做的第一種方式?
你試圖解決什麼問題? – Pointy
我只想知道如何從一個對象開始,並附加一個函數,所以'x()'運行該函數。 – Mottie
函數是唯一可調用的本機EMCAScript類型。你不能進行非函數調用,因爲ECMAScript沒有公開任何方式來操作對象的[[Call]]內部屬性。如果你想把一個對象變成一個函數,爲什麼不把它作爲一個函數呢? – apsillers