利用闭包创建私有静态成员
发布在javascript模式2014年3月3日view:3255
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

私有静态成员是指:

  • 以同一个构造函数创建的所有对象共享该成员。
  • 构造函数外部不可访问该成员(注意这里对象的方法也无法访问)。

下面是实现代码:

var Person = (function () {
    var id = -1;

    // 真正的构造函数
    var NewPerson = function () {
        id++;
        this.id = id;
    }

    // 给每个实例添加一个标识id
    NewPerson.prototype.getId = function () {
        return this.id;
    }

    // 获取最后一个实例的id, 这是个共享方法,每个实例对象都可以访问
    NewPerson.prototype.getLastId = function () {
        return id;
    }

    // 获取最后一个实例的id, 这是个静态方法,可以直接使用构造函数访问
    NewPerson.getLastId = NewPerson.prototype.getLastId;

    return NewPerson;

})();

var p1 = new Person();
var p2 = new Person();

console.log(p1.getId()); // 0
console.log(p2.getId()); // 1
console.log(Person.getLastId()); // 1

以上代码创建了一个Person的对象,通过应用即时函数返回对象的构造方法,而通过函数闭包的特性,使私有静态成员id只能在构造函数内访问。

评论
发表评论
暂无评论
PUBLISHED IN
javascript模式

学习使用javascript高大上的设计模式

我的收藏