快速说明: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();
}
关于第二种方法,以下任何一项是否正确或可能正确:
- 明显慢了
- 在某些情况下它根本不起作用
- 它破坏了正确的编码实践
- 调试会更困难
- 有一种更优越的方法可以实现相同的结果
谢谢。
最佳答案
将代码包装在内部函数中本身并没有什么问题。您唯一需要注意的是,您不能在其他函数中使用 this
(您需要使用中间变量,例如 yout thisObject
。
排除了这一点,我认为“挂起代码”完全没有问题(至少是您的示例中所示的那种)。像 Java 这样的语言可能会训练您将所有内容放入类中,但在 Javascript 中,只有在您明确想要利用继承或多态性的情况下,您才真正需要进行 oop-things-up。
您可能需要稍微摆脱 oop 思维模式。例如,在您的情况下,新对象构造函数内的“挂起代码”可能看起来很糟糕,但我只想将该函数重命名为“addClickHandler”或“setLiterals”,然后就到此为止了。
关于javascript - 在 Javascript 中模仿基于类的 OOP 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7590151/