2016-07-26 69 views
2

我很困惑,目的或用例是什麼函數能夠在JavaScript中進行方法調用。我明白函數被認爲是對象,因此可以擁有自己的屬性和函數,但在我看來,它與我稱之爲標準對象的方式有點不同。例如,爲什麼我要做到這一點...Javascript函數有自己的方法

var myFunction = function(){...}; 
myFunction.method = function(){...}; 

而不是創建一個對象,並具有一種或多種功能屬性,如下面的...

var obj = {method: function(){}}; 

如果我們安慰每次的.log我們得到以下...

console.log(myFunction); 
console.log(obj); 
------------------------------------------ 
{ [Function] secondFunction: [Function] } 
{ method: [Function] } 

我想目前學習Express.js框架,看起來它大量使用了這一概念。有什麼意義?這是什麼意思的頂級功能?

+1

也許這兩個答案可以幫助 http://stackoverflow.com/a/15285702/2418529 http://stackoverflow.com/a/155655/2418529 –

+0

感謝您的答覆,但我已經明白的差別一個函數之間的一個方法。我認爲我的困惑源於相同的原理,即正方形在技術上是矩形,但矩形不一定是正方形。在JavaScript的情況下,函數是一個對象,但一個對象不一定是一個函數。區別在於可以調用一個函數對象。這個功能的重點是什麼?什麼是用例? – 4Matt

回答

3

在express的情況下,這使得可以調用頂級API並訪問模塊的其他內容。

var express = require('express'); 

var app = express(); 
app.use(express.static('/root')); 

var router = express.Router(); // etc... 

這是很常見的,如果一個模塊的主要出口是某種形式的「構造」,筆者也想通過連接到同一個頂層的出口暴露更多的東西。