【问题标题】:Mixins with John Resig's Class Syntax使用 John Resig 的类语法的 Mixins
【发布时间】:2012-02-08 00:16:23
【问题描述】:

我已经实现了与John Resig's Class library 兼容的简单 Mixin 行为。我要求其他 JS 人员检查代码并让我知道这是否是 Mixin 的正常工作方式(我以前没有使用过很多)。

http://jsfiddle.net/aaronsnoswell/PHuvs/

如果代码不正确,它应该如何工作?

【问题讨论】:

  • 我认为你不需要 augment(Ninja, CanRun); - 它确实已经从 Person 继承而来,其中 CanRun 混入其中。
  • jsfiddle 链接似乎不再分叉了... :(

标签: javascript prototype mixins


【解决方案1】:

我认为有必要考虑 mixin 实现的风格。

例如,如果我做了这样的事情:

if(ninja instanceof CanRun){
    document.write("yea");
}else{
    document.write("no");
};

那我应该说“是”还是“不是”?

在您的实现中,mixin 不是类。我不知道它是你的目标,但在许多语言中,mixin 是一个完全有价值的类,除了它不允许创建实例。

【讨论】:

  • CanRun 是一个对象,所以instanceof 会抛出异常。这不是 mixins 的工作原理。
  • @Bergi 例如,在 Ruby 中,is_a(instanceof 模拟)可以像使用类一样正确使用 mixins。所以如果这段代码实现了自己对mixin的理解就OK了。但一般情况下并非如此。
  • 将此标记为已接受的答案。感谢您的反馈。
猜你喜欢
  • 2011-09-19
  • 2012-02-21
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 2013-02-09
  • 2011-02-08
相关资源
最近更新 更多