在Javascript中,函数foo(){}是一个类,一个标准函数,还是一个具有属性的函数?

时间:2015-04-12 06:13:46

标签: javascript

作为一个新手,函数foo(){}让我感到困惑。

为什么它用于这么多目的?它是为什么建造的?这不会使代码维护变得困难吗?

编辑:我不是在谈论" foo"但关于一般的功能。

2 个答案:

答案 0 :(得分:1)

正如我理解这个问题,你似乎在询问当函数用于模块,函数,构造函数,生成器以及其他很多东西时代码是否更难维护。这是一个公平的问题。有些人可能会说是,但很多人会说这种语言更简单,更优雅,因为单一的结构,即功能,可以做得那么多。 Lisp和Smalltalk拥有一些最热情的粉丝并不是偶然的,因为这些语言有一个非常简单的核心。 JavaScript有一种简单的核心,但还有很多其他的包袱,你可以在网上的几个地方阅读。

但你也问过一个函数是否是一个类。这是交易:JavaScript没有课程!最好甚至不要在JavaScript中考虑类。可能有数百次尝试在JavaScript中创建类似于类的结构。 JavaScript是通过原型围绕委托的概念设计的。

对象有原型。当您在对象中查找属性并且该属性不存在时,查找将委派给原型。就是这样。像Self和Lua和Io这样的其他语言也有原型(Lua有metatables),但重点是:这些语言没有课程,他们不需要它们

现在如果你没有上课,而你想制作一堆相同类型的物品,你会怎么做?您编写了一个函数,该函数创建一个对象,该对象的原型包含该"类型的所有对象的共享状态和行为。"即使在具有类的语言中,也会发生同样的事情 - 你有构造函数(可能称为newinit或者以类或其他名称命名)。

无论如何,问题的答案是:"没有课程会让你的课程更难维护?"是"不,当你学习如何正确使用原型时,不是!"

这最终是一个偏好的问题,真的。可以选择课程。可以选择原型。一个好的开发人员可以同时使用它们。

答案 1 :(得分:-1)

正如评论中所述,foo()不是实际的功能。它用于表示示例函数。函数foo()可以是其他任何东西,比如f(),fun(),magic(),example().......你得到了图片。当在工作代码中使用名为foo()的函数时,确保不再使用该名称。所以它不会使维护变得困难