我想模拟 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/