我很好奇如何在我用红宝石完成的javascript中实现一些东西。这是红宝石的例子:
class Person
@@count = 0
def initialize
@@count += 1
end
def self.count
@@count
end
end
每次初始化时,计数器都会增加。
joe = Person.new
Person.count
=> 1
bob = Person.new
Person.count
=> 2
您如何在javascript中实现此功能?
谢谢!
答案 0 :(得分:1)
您可以使用构造函数或工厂方法的属性。
使用构造函数:
function Person () {
Person.count += 1;
}
Person.count = 0;
var bob = new Person();
使用工厂方法:
function person () {
var p = {}
person.count += 1;
return p;
}
person.count = 0;
var bob = person();
使用其中任何一个,您也可以使用外部变量,而不是将其放在函数上。
答案 1 :(得分:0)
将来,javascript将有一个class
引用,它将执行以下操作,因为我们已经习惯了其他语言,但今天我们使用functions
来声明“类”。我使用全局window
对象来跟踪我们的count
变量,以便它不会被困在类实例的范围内。
window.count = 0;
function Person () {
window.count++;
}
var joe = new Person();
var bob = new Person();
答案 2 :(得分:0)
使用函数名称
可以在构造函数中轻松定义/更新静态属性function Person () {
(Person.count=Person.count||0)++;
}
现在,Person.count应该反映构造函数创建的实例数。
答案 3 :(得分:0)
您可以像这样使用每个函数对象的prototype属性 //空函数,它将继承存储对象的原型属性
function Person(){}
现在,创建
var p=new Person();
p.constructor.prototype.count=0;
var q=new Person();
q.constructor.prototype.count++;
这将增加相同原型对象的计数,这样就可以跟踪创建的新对象。