JavaScript用法 - OOP,原型和(不那么)简单变量

时间:2013-09-26 00:53:10

标签: javascript oop cordova

我一直在编写JavaScript。我没有参加过课程或阅读有关最佳实践的指南/书籍,但我似乎已经把事情搞清楚了。我知道我的代码并不总是最短和最干净的,但它对我来说是有道理的。

我最近进入了面向对象的编程,并认为这是一个先进入语言的好时机。虽然我知道花几天时间倾听OOP符合我的最佳利益,但我有一个特定的问题可以帮助我进行尝试。


制作变量对象

例如,我有一个PhoneGap应用程序,其中包含许多函数,每个函数都在拆分的.js文件中串行列出。一切都运行正常,但我必须继续在每个函数之间传递相同的几个函数,并且错误的可能性很好。在阅读了一些方法和对象后,每个页面都演变为这种用法:

var myPage = {
    myVar1 : 'value',
    myVar2 : 32,
    initialize : function() {
        //code that initialized the variables within this object
    },
    doSomething : function() {
        //function that would do something with myPage vars
    }
    //...
};

使用这种方法,每个页面最终都是一个包含许多包含方法和变量的宏变量。这清理了很多,并大大减少了全球变量,但我仍然觉得它不是很完美。我的共享.js文件被分解为类型和许多对象,每个对象都有自己的功能。我的第一个问题是:这是一件坏事,如果是这样,为什么?如果我可以得到我的具体用途的解释,那么除了在教科书和指南中看到最佳例子之外,它还有什么好处。


使用单个实例制作原型和类

查看此处提供的示例以及Web和死树出版物,我看到对象和原型行为被定义为类,然后创建类的实例。然而,我不需要做任何事情,这似乎符合这个预算,我几乎是肯定的,因为我只是没有考虑正确的范例。但是,如果我有一个验证输入的功能,那么如何适应更好的OOP方法

我只是有一个名为validate的变量/对象,它包含必要的函数,然后将该变量放在共享文件中。如果我要将它创建为一个类并在每次我需要验证某些内容时创建它的实例,那么这不会产生更多的开销吗?我不知道它如何适用于这样的应用程序。

<小时/> 我认为OOP是要走的路,我希望成为它的一部分。提前感谢所有答案和评论。

1 个答案:

答案 0 :(得分:1)

  

我的第一个问题是:这是一件坏事,如果是,为什么?

主管开发人员避免在全局范围内定义函数(在脚本中编写function() {}时执行的操作),因为它会污染全局范围,许多其他脚本会尝试执行相同操作。想想看,因为我们中的许多人都试图在同一页面上创造一个更好的“分享()”功能 - 我们中只有一个人会赢。

  

我看到对象和原型行为被定义为一个类,然后创建了类的实例。然而,我不需要做任何事情,这似乎符合这个预算,我几乎是肯定的,因为我只是没有考虑正确的范式

你可以做的并不多。如果你有一个验证输入的函数,那么作为元素的一部分会更好:

someElement.validate();  // as a prototype

而不是传统的

validate(someElement);  // as a global function