0

我已经编写 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 文件被分解为类型和许多对象,每个对象都有自己的功能。我的第一个问题是:这是一件坏事,如果是,为什么?如果我能得到关于我的具体用途的解释,那将比在教科书和指南中看到最佳示例更让我受益。


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

查看此处提供的示例以及网络和死树出版物中提供的示例,我看到对象和原型行为被定义为一个类,然后创建该类的实例。然而,我不需要做的任何事情似乎都符合这个预算,而且我几乎可以肯定这是因为我根本没有以正确的范式思考。但是,如果我有一个验证输入的函数,它如何适应更好的 OOP 方法

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


我认为 OOP 是要走的路,我想成为其中的一部分。提前感谢所有答案和评论。

4

1 回答 1

1

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

有能力的开发人员避免在全局范围内定义函数(您function() {}在脚本中编写时所做的事情),因为它污染了全局范围,许多其他脚本都试图这样做。想想我们中的许多人都试图在同一页面上创建一个更好的“share()”函数——我们中只有一个人会赢。

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

你在那里无能为力。如果您有一个验证输入的函数,那么作为元素的一部分会更好:

someElement.validate();  // as a prototype

而不是传统的

validate(someElement);  // as a global function
于 2013-09-26T01:07:35.227 回答