Javascript 我可以使用EmberJS mixin添加(静态)类方法吗

Javascript 我可以使用EmberJS mixin添加(静态)类方法吗,javascript,ember.js,static-methods,class-method,Javascript,Ember.js,Static Methods,Class Method,在标准的ember mixin示例中,我们添加了实例方法/属性: 通过重新启动类,我们可以添加类方法(静态方法),这给我们带来了如下好处: UninstantiatedClass.findAll() 我可以创建一个添加类方法的mixin吗?首先,我还在学习EmberJS.) 我也有同样的问题:如何向类添加公共类方法 我的理解是,不能使用mixin(警告:我可能错了),但可以使用普通子类 看看这个。士兵是App.Person的一个子类,包含实例和类方法。这些可供App.Soldier使用 如果在

在标准的ember mixin示例中,我们添加了实例方法/属性:

通过重新启动类,我们可以添加类方法(静态方法),这给我们带来了如下好处:

UninstantiatedClass.findAll()

我可以创建一个添加类方法的mixin吗?

首先,我还在学习EmberJS.)

我也有同样的问题:如何向类添加公共类方法

我的理解是,不能使用mixin(警告:我可能错了),但可以使用普通子类

看看这个。士兵是App.Person的一个子类,包含实例和类方法。这些可供App.Soldier使用

如果在控制台中键入以下命令:

x = App.Soldier.create();
x.hello(); // => "hello world!"
x.fire(); // => "Laser gun, pew! pew!"
App.Soldier.identifyYourself(); // => "I'm a humanoid carbon unit"
这种方法的缺点是有人可以自由地实例化App.Person对象。此外,不能对多个父类进行子类化

无论如何,我希望这对你有帮助是的,你可以

只需在类调用期间提供mixin:

// The mixin itself
FooMixin = Em.Mixin.create({
   ...
});

// Mix in at the instance level
BarClass = Em.Object.extend(FooMixin, {
   ...
});

// Mix in at the class level
BarClass.reopenClass(FooMixin, {
   ...
});
我也偶然发现了这个问题,并发现这是在话语项目中完成的


希望这有帮助

谢谢你,大卫。这也是我在这一点上的理解。我最终编写了一个工厂来生成这些类。