javascript-如何使用CoffeeScript模拟现有代码?

我想模拟出MarkdownDeep,下面的代码在JavaScript

MarkdownDeep = new (function () {
    this.Markdown = function () {
        this.Transform = function (a) {
            return "html";
        };
    };
})();

但是我在CoffeeScript中实现它有困难

我尝试了以下

MarkdownDeep = new (->
  @Markdown = ->
    @Transform = (a) ->
      "html"
)()
window.MarkdownDeep = MarkdownDeep

但它不起作用,特别是在我的单元测试中,markdown = new MarkdownDeep.Markdown()给出“未定义不是函数”,尽管JS版本模拟得很好.

解决方法:

您的示例生成以下javascript代码:

var MarkdownDeep;
MarkdownDeep = new (function() {
  return this.Markdown = function() {
    return this.Transform = function(a) {
      return "html";
    };
  };
});
window.MarkdownDeep = MarkdownDeep;

该行返回this.Markdown = function(){/ * … * /}使函数成为new运算符返回的对象.

写作

MarkdownDeep = new (->
  @Markdown = ->
    @Transform = (a) ->
      "html"
    return
  return
)
window.MarkdownDeep = MarkdownDeep

解决问题.

加成:
This answer提到了JavaScript中用于对象构造的算法

上一篇:性能测试连载 (7)-jmeter 压力测试中的难点解析


下一篇:javascript-为什么CoffeScript不“重用”循环变量?