我需要this
从 Dart 函数中访问 JavaScript 对象。我正在通过 Dart-JS 互操作有效地向 JavaScript 对象添加新方法。我需要从 Dart 中定义的方法访问 JavaScript 对象上的属性。
问问题
360 次
1 回答
5
构造Callback
函数可以传递this
from JavaScript。根据回调的 API 文档:
new Callback.many(Function f, {bool withThis: false})
new Callback.once(Function f, {bool withThis: false})
这是一个例子:
飞镖代码:
import 'dart:html';
import 'package:js/js.dart' as js;
void main() {
var greeter = js.context['greeter'];
var msg = greeter['greet']('Bob');
greeter['doCoolStuff'] = new js.Callback.many(doCoolStuff, withThis: true);
}
doCoolStuff(jsThis) {
print(jsThis['msg']);
}
注意withThis: true
创建回调时的使用。from JavaScript 作为第this
一个参数传入回调函数。在这种情况下,我将其命名为jsThis
.
JavaScript 代码:
function Greeter() {
this.msg = 'hello';
var that = this;
document.getElementById('clickme').addEventListener('click', function() {
that.doCoolStuff();
});
}
Greeter.prototype.greet = function(name) {
return this.msg + ' ' + name;
}
var greeter = new Greeter();
document.getElementById('clickme').addEventListener('click', function() {
greeter.doCoolStuff(); // comes from Dart land
});
于 2013-07-17T05:26:29.113 回答