如何查看某个类是否已实例化

时间:2013-01-24 19:33:40

标签: javascript class coffeescript

这是一个代码示例

class person 
  constructor: (@name, @age) ->

bob = new person("bob", 11)

if person?
  alert "yes!"
else
  alert "no"

在这里,我测试一个人类是否被实例化,并警告“是的!”喜欢它应该。因为鲍勃是一个人,并且被实例化了。

但是在这里:

class person 
  constructor: (@name, @age) ->

if person?
  alert "yes!"
else
  alert "no"

我希望此提醒“不”,因为没有人被实例化,但它仍然警告“是的!”

那么测试一个类是否已经实例化的正确方法是什么。

澄清:

我不想测试看看鲍勃是什么。我想看看是否有任何形式的人都不知情。

2 个答案:

答案 0 :(得分:1)

您正在测试是否定义了person类。这将实现你想要的。

class person 
  constructor: (@name, @age) ->
    person.prototype.instantiated = true

if person.prototype.instantiated
  alert "yes!"
else
  alert "no"

答案 1 :(得分:1)

与上面的答案相同,但有更多类似coffeescript的语法:

class person 
  constructor: (@name, @age) -> person::instantiated = yes

bob = new person "bob", 11

if person::instantiated
  alert "yes!"
else
  alert "no"