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

标签 javascript coffeescript markdowndeep

我想模拟 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() 给出“undefined is not a function”,尽管 JS 版本模拟得很好。

最佳答案

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

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

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

写作

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

解决问题。

添加: This answer提到javascript中对象构造的算法

关于javascript - 如何使用 CoffeeScript 模拟现有代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787810/

相关文章:

javascript - 简单 JSON 对象抛出 "Object doesn' t 支持此属性或方法”

javascript - 从潇洒类(Class)拓展

coffeescript - Docco 忽略注释 block

javascript - 在 Coffeescript 中强制迭代 for 循环

javascript - 从 jQuery .val() 添加文本时如何更新 MarkdownDeep 的实时预览?

javascript - 可以将 AngularJS 用于 Chrome 扩展的选项页面吗?

javascript - javascript 的 onClick 事件在移动设备上不起作用

javascript - 通过Node.js服务HTML5