gpt4 book ai didi

dart - 如何通过函数创建对象

转载 作者:行者123 更新时间:2023-12-03 02:57:41 25 4
gpt4 key购买 nike

我正在尝试在Dart中为lunr.js(http://lunrjs.com/)创建包装,但是,我找不到有关如何在Dart js互操作中使用this的文档。

这是我要创建的对象:

var index = lunr(function () {
this.field('title', {boost: 10})
this.field('body')
this.ref('id')
})

目前,这就是我所拥有的。

JsObject index = new JsObject(context['lunr'], [()
{

}]);

如何从匿名函数访问 this

另外,我在哪里放置实际的lunr.js?我只是为此做一个包装,所以除非有必要,否则我看不出有任何理由将其包含在HTML文件中。

编辑:

我也尝试过:

创建一个函数以允许使用 this关键字。 (仍然不确定此语法是否正确)

_f = new JsFunction.withThis( (t) {
t.callMethod('field', ['title', {boost: 10}])
t.callMethod('field', ['body'])
t.callMethod('ref', ['id'])
});

然后使用该函数创建一个 JsObject:

JsObject index = new JsObject(context['lunr'], [_f]);

这会给我这个错误:

异常:未处理的异常:
参数不匹配的闭包调用:函数'call'

NoSuchMethodError: incorrect number of arguments passed to method named 'call'
Receiver: Closure: (dynamic) => dynamic
Tried calling: call(Instance of 'JsObject', Instance of 'JsObject')
Found: call(t)
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:45)

接下来我尝试了这个:

JsObject index =new JsObject.fromBrowserObject(context['lunr']);

那给了我一个不同的错误: Exception: Illegal argument(s): object cannot be a num, string, bool, or null
这可能是因为在以这种方式创建JsObject时,我无法调用 _f函数。

最佳答案

您必须使用:

context.callMethod('lunr', [_f]);
new JsObject(context['lunr'], [_f]);与JS中的 new lunr(f)相同。

关于dart - 如何通过函数创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com