Javascript可以写成函数式的, 也可以写成面向对象的. 如果考虑易读性, 最好还是采用面向对象的风格. 如果是一个技术平台或框架,可以考虑采用函数式的写法.
对于面向对象的写法, 从最基础的类开始, javascript就有很多种方法写一个类, 那到底哪种是最佳的呢? 和同事讨论, 认为以下的写法是最OK的.
function ClassA()
{
var _this = this; //这是为了给ClassA的私有类使用本实例
var _field1; //private的成员变量
var privateMethod1 = function()
{
//private里调用private,直接用。
_field1 = 1;
privateMethod2();
//private里调用public,用_this.xxx。
_this.publicMethod1();
}
this.publicMethod1 = function()
{
//public里调用private,直接用。
_field1 = 1;
privateMethod1();
//public里调用public,用this.xxx。
this.publicMethod2();
}
ClassA.prototype.staticMethod1 = function()
{
//静态方法
}
}
function user()
{
var a = new ClassA();
//public的调用,private的外面就看不到了。
a.publicMethod1();
//静态方法,必须加.prototype,没办法, JS能这样已经很不错了.
//而且通过实例a.staticMethod1()也能调用。
A.prototype.staticMethod1();
}
以上是类的一种写法, 它的好处是可以区分私有/公用 方法, 也有人使用Prototype来写公共方法(里面用this调用实例变量). 但这里将Prototype定位为静态方法的写法, 更加合理和更全面.