【问题标题】:How to create a private static variable in prototype pattern如何在原型模式中创建私有静态变量
【发布时间】:2016-09-19 20:29:51
【问题描述】:

在下面的代码中,所有实例化的 Page 对象都从静态变量“nextId”中获取它们的 ID。重置 nextId 的最佳方法是什么?我不喜欢我这样做的方式,因为它是通过实例化对象访问的。我宁愿做这样的事情:

Page.reset()。怎么可能?

https://plnkr.co/edit/heOz52QxK6CExhe8Hdfm?p=preview

var Page = (function() {

var nextId = 0;

function Page(content) {
    this.id = nextId++;
    this.content = content;
}

Page.prototype.reset = function() {
    nextId = 0;
}   

Page.prototype.show = function() {
    console.log(this.content + ' is ' + this.id);
}

return Page;



}())


var a = new Page('a')
a.show() // a is 0

var b = new Page('b')
b.show() // b is 1

var c = new Page('c')
c.show() // c is 2

a.reset()

var d = new Page('d')
d.show() // d is 0

【问题讨论】:

  • 如果你想要一个静态方法,不要把它放在原型上,而是放在Page本身上?

标签: javascript static prototype


【解决方案1】:

Page 对象上定义 #reset(),而不是在它的原型上:

Page.reset = function() {
  nextId = 0;
}

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2013-07-03
    • 2022-09-25
    相关资源
    最近更新 更多