2016-07-26 75 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... 

这是很常见的,如果一个模块的主要出口是某种形式的“构造”,笔者也想通过连接到同一个顶层的出口暴露更多的东西。