javascript - 在 Javascript 中模仿基于类的 OOP 构造函数

标签 javascript oop

快速说明:Javascript 中的 OOP 是 Stackoverflow 和其他地方的一个热门话题,但我在任何地方都找不到这个具体问题的答案。

Javascript 对象中的“挂起代码”一直困扰着我,因为它似乎破坏了代码的流程。我所说的“挂起代码”的含义如下:

function newObject()
{
    var thisObject = this;

    // HANGING CODE DOING VARIOUS THINGS SUCH AS
    // $('#someDiv').click(function(){}); OR
    // var someObjectLiteral = {value:'value'};
}

我想通过执行以下操作来模仿基于类的 OOP 构造函数:

function newObject()
{
    var thisObject = this;

    function construct()
    {
        //WHAT USED TO BE HANGING CODE
    }

    construct();
}

关于第二种方法,以下任何一项是否正确或可能正确:

  1. 明显慢了
  2. 在某些情况下它根本不起作用
  3. 它破坏了正确的编码实践
  4. 调试会更困难
  5. 有一种更优越的方法可以实现相同的结果

谢谢。

最佳答案

将代码包装在内部函数中本身并没有什么问题。您唯一需要注意的是,您不能在其他函数中使用 this (您需要使用中间变量,例如 yout thisObject

排除了这一点,我认为“挂起代码”完全没有问题(至少是您的示例中所示的那种)。像 Java 这样的语言可能会训练您将所有内容放入类中,但在 Javascript 中,只有在您明确想要利用继承或多态性的情况下,您才真正需要进行 oop-things-up。

您可能需要稍微摆脱 oop 思维模式。例如,在您的情况下,新对象构造函数内的“挂起代码”可能看起来很糟糕,但我只想将该函数重命名为“addClickHandler”或“setLiterals”,然后就到此为止了。

关于javascript - 在 Javascript 中模仿基于类的 OOP 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7590151/

相关文章:

javascript - 仅用于数字和连字符的正则表达式

javascript - JavaScript 如何比较作为参数传入方法的对象?

javascript - Jest 模拟 React 组件

c++ - 一个棘手的 OOP 问题,我从来没有想过

javascript - 尝试 'encapsulate' 可重用的 javascript 代码

javascript - Html Canvas 自由变换

javascript - 屏幕宽度检测在 Internet Explorer 中不起作用

c# - 混淆 : Internal, 保护和保护内部

javascript - 如何准备这个遗留类以导入到 VueJs 应用程序?

java - java中的反射,方法继承