Javascript 如何从数据传输中获取数据作为对象?

Javascript 如何从数据传输中获取数据作为对象?,javascript,Javascript,我做了以下工作: const blockOrField = new Block(); ev.dataTransfer.setData("data", blockOrField); 当我在另一个地方获取数据时: cosnt data = e.dataTransfer.getData("data"); 我将数据作为[object object]而不是真正的instrance 在传递到数据之前,我看到它是一个实例: if (blockOrField instanceof FieldDefini

我做了以下工作:

const blockOrField  = new Block();
ev.dataTransfer.setData("data", blockOrField);
当我在另一个地方获取数据时:

cosnt data = e.dataTransfer.getData("data");
我将
数据
作为
[object object]
而不是真正的instrance

在传递到数据之前,我看到它是一个实例:

 if (blockOrField instanceof FieldDefinition) {
      alert("works");
  }

ev.dataTransfer.setData("data", blockOrField);

我知道应该将其序列化为字符串JSON,但我有一个复杂的实例,它的组成非常复杂。

如果您查看文档,它会特别指出“一个DOMString,表示要添加到拖动对象的数据。”。因此,尝试在那里存储对象引用是不走运的

我在这里要做的是在某处创建另一个对象,并将所需的引用与id一起存储在那里

const dataTransferCache = {};

function onDragStart(ev) {
    const block = new Block();
    const id = GetRandomId(); // Just get an id somehow
    dataTransferCache[id] = block;
    ev.dataTransfer.setData("data", id);
}

function onDragEnd(ev) {
    const id = ev.dataTransfer.getData("data");
    const block = dataTransferCache[id];
    delete dataTransferCache[id]; // Remove the value again
}

如果需要的话,它甚至支持多点触摸拖动。如果这需要在组件之间共享,您可以简单地将dataTransferCache放在一个单独的文件中,并在两个组件中都包含对in的引用。

Set Data的功能是否与
localStorage
的功能相同?如果是这样,您可能希望在设置数据时
JSON.stringify
数据。不,我不需要序列化,我需要将其作为实例传递classIt将实例转换为字符串:
console.log(typeof e.dataTransfer.getData(“data”)此QA可能与。。。我知道,但你们知道实例类和普通对象的区别吗