在here中的JSFiddle,这是一个JavaScript和/或CodeMirror问题。
在下面的代码段中,hint
函数被定义为hintOptions
对象中的属性。
是否有可能设置该函数的属性,而不在代码块之外定义它?
var editor = CodeMirror.fromTextArea(myTextarea, {
hintOptions: {
hint: function(cm, callback, options) {
return {
}
}
}
});
我尝试使用匿名函数,如:
var editor = CodeMirror.fromTextArea(myTextarea, {
hintOptions: {
hint: (function(cm, callback, options) {
return {
}
})({
async: true
})
}
});
但似乎是语法错误,因为JavaScript根本不起作用。
正如CodeMirror docs所述:
提示:功能
提示功能,如上所述。可以将提示函数的
async
属性设置为true,在这种情况下,它将使用参数调用(cm,callback,?options)
检查async
是否设置正确:
log
textarea应该没有undefined
答案 0 :(得分:1)
对象初始化程序中用于创建具有async
属性的函数的IIFE似乎有效:
let testObj = {
hintOptions: {
hint: (function () {
let hint = function(cm, callback, options) {
log(options);
return {
from: cm.getDoc().getCursor(),
to: cm.getaDoc().getCursor(),
list: ['foo', 'bar']
}
}
hint.async = true;
return hint
})()
}
};
console.log("hint.async: " + testObj.hintOptions.hint.async);

我设法得到" [object Object]"在发布说明后的小提琴中,但不知道这是预期的结果。