簡體   English   中英

如何通過 JS - Dart 互操作從 JavaScript 訪問 `this`?

[英]How do I access `this` from JavaScript via JS - Dart interop?

我需要從 Dart 函數訪問 JavaScript 對象的this 我通過 Dart-JS 互操作有效地向 JavaScript 對象添加了一個新方法。 我需要從 Dart 中定義的方法訪問 JavaScript 對象上的屬性。

Callback構造函數可以從 JavaScript 傳遞this 根據回調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 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
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM