2016-09-19 79 views
0

在下面的代码中,所有实例化的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 
+1

如果你想有一个静态方法,只是不要把它在原型上,但在'Page'本身? – Bergi

回答

0

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

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