gpt4 book ai didi

dart - Dart中的JS Object.create()

转载 作者:行者123 更新时间:2023-12-03 02:51:44 29 4
gpt4 key购买 nike

我正在Dart中构造两个JS对象。在JS中,它们是使用Object.create()构造的:

var wavesurfer1 = Object.create(WaveSurfer);
var wavesurfer2 = Object.create(WaveSurfer);

我认为这与Dart等效:

var wavesurfer1 = context['WaveSurfer'];
var wavesurfer1 = context['WaveSurfer'];

但是,我发现Dart中的两个对象看起来是相同的。当我在一个对象中调用函数时,它将在两个对象中均被触发。在JS代码中不会发生这种情况。我怀疑Object.create()不应在Dart中写为context ['']。如果是这样,我将无法在dartlang.org或stackoverflow.com中找到有关如何正确将此表达式转换为Dart的示例。您可以看到WaveSurfer here的JS源代码。

最佳答案

使用context['WaveSurfer'],您将获得一个与Js WaveSurfer而不是新对象相对应的JsObject。

要执行Dart等效于您粘贴的JS代码,请执行以下操作:

import 'dart:js';

var wavesurfer = context['WaveSurfer'];
var wavesurfer1 = context['Object'].callMethod('create', [waveSurfer]);
var wavesurfer2 = context['Object'].callMethod('create', [waveSurfer]);

参见 Using JavaScript from Dart

如果您发现dart:js的用法过于繁琐,则可以使用package:js提供更简单的API(但JS生成的大小更大):

import 'package:js/js.dart';

var wavesurfer1 = context.Object.create(context.WaveSurfer);
var wavesurfer2 = context.Object.create(context.WaveSurfer);

关于dart - Dart中的JS Object.create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560745/

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