如何分配需要在CoffeeScript中引用的静态类属性?

如何分配需要在CoffeeScript中引用的静态类属性?,coffeescript,Coffeescript,我使用一个库来包装节点的require方法,以允许模拟对象注入。其中一个特性是,它使用原始属性扩展模拟对象,以便填充缺少的属性。您可以通过在名为@noCallThru的模拟对象上设置一个属性来关闭此功能,如下所示: MockObj = stubFunc: -> "@noCallThru": true proxyquire "path/to/module", "path/to/mocked_module": MockObj 有些模块是构造函数(类),所以要模拟它们,可以使用C

我使用一个库来包装节点的require方法,以允许模拟对象注入。其中一个特性是,它使用原始属性扩展模拟对象,以便填充缺少的属性。您可以通过在名为
@noCallThru
的模拟对象上设置一个属性来关闭此功能,如下所示:

MockObj =
  stubFunc: ->
  "@noCallThru": true

proxyquire "path/to/module",
  "path/to/mocked_module": MockObj
有些模块是构造函数(类),所以要模拟它们,可以使用CoffeeScript的类系统。但是,
@noCallThru
的使用是在返回的对象(在本例中是类)上检查的,因为它不是实例,所以不会使用prototype。
@noCallThru
必须是类的静态属性

如何为需要引用的CoffeeScript类定义静态属性?我能想到的最好办法就是这样注入JavaScript:

class MockClass
  stubFunc: ->
  `MockClass['@noCallThru'] = true`

有更好的方法吗?

您不需要将其作为JavaScript注入。您可以这样做:

class MockClass
  stubFunc: ->
  @['@noCallThru'] = true
(因为在类定义中,
这个
@
指的是类/构造函数本身)

上述代码编译为:

var MockClass;

MockClass = (function() {
  MockClass.name = 'MockClass';
  function MockClass() {}
  MockClass.prototype.stubFunc = function() {};
  MockClass['@noCallThru'] = true;
  return MockClass;
})();

您不需要将其作为JavaScript注入。您可以这样做:

class MockClass
  stubFunc: ->
  @['@noCallThru'] = true
(因为在类定义中,
这个
@
指的是类/构造函数本身)

上述代码编译为:

var MockClass;

MockClass = (function() {
  MockClass.name = 'MockClass';
  function MockClass() {}
  MockClass.prototype.stubFunc = function() {};
  MockClass['@noCallThru'] = true;
  return MockClass;
})();

您不需要将其作为JavaScript注入。您可以这样做:

class MockClass
  stubFunc: ->
  @['@noCallThru'] = true
(因为在类定义中,
这个
@
指的是类/构造函数本身)

上述代码编译为:

var MockClass;

MockClass = (function() {
  MockClass.name = 'MockClass';
  function MockClass() {}
  MockClass.prototype.stubFunc = function() {};
  MockClass['@noCallThru'] = true;
  return MockClass;
})();

您不需要将其作为JavaScript注入。您可以这样做:

class MockClass
  stubFunc: ->
  @['@noCallThru'] = true
(因为在类定义中,
这个
@
指的是类/构造函数本身)

上述代码编译为:

var MockClass;

MockClass = (function() {
  MockClass.name = 'MockClass';
  function MockClass() {}
  MockClass.prototype.stubFunc = function() {};
  MockClass['@noCallThru'] = true;
  return MockClass;
})();

@['@noCallThru']=true
将更接近通常的
@class_prop=x
@muistooshort:谢谢,将它移到了答案的第一部分。
@['@noCallThru']=true
将更接近通常的
@class_prop=x
@muistooshort:谢谢,将它移到了答案的第一部分。
[@noCallThru']=true
将更接近通常的
@class_prop=x
@muistooshort:谢谢,把它移到了答案的第一部分。
@['@noCallThru']=true
将更接近通常的
@class_prop=x
@muistooshort:谢谢,把它移到了答案的第一部分。