【发布时间】:2018-04-11 17:42:37
【问题描述】:
我正在尝试简化一些代码,但在将某些内容转换为函数时遇到了错误。我实际上是在尝试创建一个接受单个输入的函数,然后返回三个最终作为另一个函数的三个参数的东西。
注意:最后一个接受三个参数的函数是一个名为md.use()的方法
原始(工作)代码如下:
md.use(require('markdown-it-container'), 'warning', {
render: function (tokens, idx) {
var m = tokens[idx].info;
if (tokens[idx].nesting === 1) {
return '<aside class="warning">' + md.utils.escapeHtml(m[0]);
} else {
return '</aside>\n';
}
}
});
我在精简/使其可重用方面的尝试是:
function aside(name) {
return [require('markdown-it-container'), name, {
render: function (tokens, idx) {
var m = tokens[idx].info;
if (tokens[idx].nesting === 1) {
return '<aside class="' + name + '">' + md.utils.escapeHtml(m[0]);
} else {
return '</aside>\n';
}
}
}]
}
md.use.apply(null, aside('warning'));
这会在我尝试构建时产生以下错误:
TypeError: Cannot read property 'block' of null
at Function.container_plugin (/Users/Paul/Development/shins/node_modules/markdown-it-container/index.js:138:6)
at MarkdownIt.use (/Users/Paul/Development/shins/node_modules/markdown-it/lib/index.js:496:10)
【问题讨论】:
-
idk 但可能 apply 调用与上下文混淆了。也许使用传播代替会修复它。
md.use(...aside('warning'));
标签: javascript function apply