javascript - 这是普通函数、构造函数还是两者都不是?

标签 javascript class object constructor jsdoc

我过去喜欢使用 js。现在我很沮丧。我正在尝试 jsDoc 我老板购买的一大块代码。作者没有提供 API,所以我将使用 jsDoc 创建一个。

不幸的是,代码不清晰,它在一个js文件中包含大约10k行代码。我过去使用过对象字面量,这不是对象字面量。参数和函数不用逗号分隔。此外,从未使用过原型(prototype),但使用了 new 运算符。我看过几本书,命名空间似乎是最接近的“风格”。这是程序的一般流程。我的问题遵循这个例子。

(function () {
var global = (function () {return this; } ).call();
global.X = {};
})();

X.init = function(){
    X.MyObjectA = new X.FooA();
    X.MyObjectB = new X.FooB();
}

X.FooA = function() {
   var storeStuff;
   do stuff
   .
   .
   function bar(){
        var storeSomething;
        do something
        do somthing else
        .
        .
        moreFunctions(){}
        var moreVars;
        .
        .

    }

    this.anOccasionalFunctionLiteral = function(){}
        .
        .
}

X.FooB = function(){
    Similar contents of FooB()
 }
 .
 .
 .
 Continues forever...

所以我的问题是:

  1. 这是什么风格!?当我说风格时,我想我的意思是 FooA 和 FooB 是什么?他们是对象吗?上课?

  2. 如果嵌套函数不是 X.FooA 或 X.FooB 的成员,我应该给它们什么标题。我被告知嵌套函数(包括 bar())不是对象 FooA 和 FooB 的方法。

  3. 如果嵌套在对象 中的函数实际上不是其周围对象的方法,是否可以从任何地方调用它?还是适用正常范围规则?

为了让生活更具可读性和快乐性,我一直将类似于 FooA 和 FooB 的对象归类为构造函数,并将构造函数内部的任何方法(例如 bar())归类为 FooA 和 FooB 的方法。这可能不正确,但至少它是有组织的。有什么建议吗?

感谢您的帮助!

最佳答案

FooA 和 FooB 是构造函数。

嵌套函数是“私有(private)”函数。

FooA内部的bar函数只能在FooA内部调用。

http://javascript.crockford.com/private.html

关于javascript - 这是普通函数、构造函数还是两者都不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064044/

相关文章:

java - 仅当类继承自特定类时才能实现接口(interface)

javascript - 如何链接两个 JavaScript 对象?

java - 用于比较 Java 和 C# 之间具有相同结构的对象的哈希码

javascript - 在不影响布局的情况下使用 jquery 扩大/缩小图片库

javascript - 成员的类继承

iphone - Objective-C类的问题?

c++ - 在类或函数声明中间的宏

Javascript 将对象存储在数组中

javascript - 根据 getDay 和 getHours + getMinutes 显示 div

c# - 方法 <ClassName> 是什么意思?