javascript - 如何在 JavaScript 中模拟 "classes"? (有或没有第三方库)

标签 javascript oop

如何在 JavaScript 中模拟类(和命名空间)?

我需要创建一个 JavaScript 库,并且对该语言的经验有限。我一直认为它对类有 native 支持,但它与 Java 的相关性比我想象的要少。看来 JavaScript 中的一切实际上都是函数。

到目前为止,我发现它是一种动态弱类型语言,这很有意义,但这对于习惯使用强类型语言并使用编译器来发现的人来说有点背离我们的错误:)

我主要使用 C# 和 Java 进行工作,并且希望有一些语法上相似的东西,这样该库对于我们必须维护它的其他 C# 开发人员来说会看起来很熟悉。

我有以下有效的代码,但我想知道其他开发人员对此有何看法。有哪些替代方案?有没有更好的方法呢?有没有更易读的方法?

我知道我想要的是类似于 C# 或 Java 的东西,而我应该接受这个是 JavaScript 的事实,但我的目标是尝试通过以下方式简化其他开发人员的学习曲线让他们更加熟悉和直观。

//Perform the namespace setup (this will actually be done with checking 
//in real life so we don't overwrite definitions, but this is kept short 
//for the code sample).
var DoctaJonez = new function();
DoctaJonez.Namespace1 = new function();

/**
 * Class description.
 */
DoctaJonez.Namespace1.SomeClass = function()
{
    /**
     * Public functions listed at the top to act like a "header".
     */
    this.publicFunction = privateFunction;

    /**
     * Private variables next.
     */
    var privateVariable;

    /**
     * Finally private functions.
     */
    function privateFunction()
    {

    }
}

//Create an instance of the class
var myClass = new DoctaJonez.SomeClass();

//Do some stuff with the instance
myClass.publicFunction();

最佳答案

关于javascript - 如何在 JavaScript 中模拟 "classes"? (有或没有第三方库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355848/

相关文章:

swift - 结构变量用setter初始化

javascript - 获取包含 HTML 内容的 contentEditable 区域中的插入符号(光标)位置

javascript - 使用 ES6 合并两个对象

javascript - 在javascript中,保留顺序分割字符串

javascript - 是否有 JQuery 事件来确定元素的子项列表何时更改?

javascript - Node JS 或 Play For Web 应用程序,也可能是移动设备

python - 以实例作为第一个参数的未绑定(bind)方法得到了字符串,但需要其他东西

c# - 在 C# 中建模数据库外键

java - 模拟场景中的业务逻辑放在哪里?

java - 面向对象设计: getter method (or object) visibility