在
Javascript中看到几十种不同的面向对象编程的方式,我感到厌烦.任何人都可以告诉我,考虑到我想在大型项目上工作,我应该使用哪种技术,我希望我的代码是未来的证明?
解决方法
这些只是我提出的一些快速指导方针,如果任何人有任何有意义的添加,我已经将此答案设置为一个社区wiki,所以应该很容易编辑.
>将对象命名为空,以确保它们不会与第三方JavaScript库发生冲突.
window['Andrew']['JS'] = { addEvent: function(el,evName) {/*Stuff*/},Rectangle: function(width,height) {/*Stuff*/} };
那么您将使用以下方式创建一个矩形对象:
var myRect = new Andrew.JS.Rectangle(14,11);
然后你的代码永远不会干扰,或者被任何人的Rectangle干扰.
>使用一致的命名策略,具体来说:
>对象名称应该被大写,所有其他(变量,函数)应该以小写字母开头,即
var myRect = new Andrew.JS.Rectangle(14,11); document.write(myRect.getArea());
>确保一切都是有意义的,即方法的动词,参数的名词形容词.
>确保所有的方法和参数与它们所属的对象相关.例如
在这个例子中,矩形的区域可以使用inSquareFeet()方法转换为平方英尺.
myRect.getAreaObject().inSquareFeet();
确保inSquareFeet是由getAreaObject()返回的对象的方法,而不是Andrew.JS.Rectangle的方法
>使用构造函数,或者更具体地,尝试尽可能的努力,以确保一个对象在构造之后不需要任何进一步的初始化,因此,而不是:
var Person = function() { this.name = ""; this.sayHello = function () { alert(this.name + " says 'Hello!'"); return this; } } var bob = new Person(); bob.name = "Bob Poulton"; bob.sayHello();
尝试:
var Person = function(name) { this.name = name; this.sayHello = function () { alert(this.name + " says 'Hello!'"); return this; } } var bob = new Person("Bob Poulton"); bob.sayHello();