2017-04-24 56 views
-5

我們有什麼辦法可以在js中這樣做嗎?是否有可能在JavaScript中調用「對象」

const pseudoFunction = {}; 
pseudoFunction(); 

也許添加方法,構造函數或其他東西到pseudoFunction

+4

你爲什麼要這麼做?您的問題可能有更好的解決方案。例如,JavaScript中的所有功能都是對象。 – nils

+1

沒有意義,你究竟在努力完成什麼? – epascarello

+0

這只是問題,沒有任何實際用法 –

回答

4

編號

函數是對象,但並非所有對象都是函數。你只能調用函數。

你可以看到the process for creating a function object in the spec。重要的是要注意步驟3:

將F的[[Class]]內部屬性設置爲「Function」。

不能設置內部物業自己,所以你不能轉換爲非功能到一個函數。

+0

確切而明確。忘了一個字***真棒*** – Jai

+0

最好的答案,謝謝;) –

1

不,你不能。你可以自己嘗試一下,你會得到錯誤。

const something = {}; 
 
something();

1

你不能做到這一點與您展示的是什麼。你不能調用一個對象。但是你可以將屬性附加到函數中(但是,這通常是一種不好的模式,你試圖以某種錯誤的方式實現)。

let myFunction = function() { 
    console.log(myFunction.apples); 
    // Remember, _this_ here is not the function, but the caller scope 
}; 

myFunction.apples = "oranges"; 

再一次,雖然這是可行的,但你想達到的目標可能是你可以用慣用的方法做到的。

+0

我不同意附加屬性函數是一個「壞模式」。這很常見。幾乎所有的jQuery都由附加到函數的屬性組成。 – Pointy

+0

現在誰在使用jQuery?你是對的,只是試圖爬取stackoverflow如何添加2個數字與JavaScript的人。 – Alex

+0

jQuery幾乎肯定仍然是部署最廣泛的庫。將屬性附加到函數沒有任何問題。 – Pointy

0

沒有,但你可以做相反:先創建函數,然後分配屬性和方法:

function doSomething() { 
 
    console.log('done it'); 
 
} 
 

 
doSomething.friend = 'John'; 
 
doSomething.printFriend = function() { 
 
    console.log(this.friend); 
 
} 
 

 
// Make some calls: 
 
doSomething(); 
 
doSomething.printFriend();

相關問題