javascript - 如何发送其中包含函数的对象

标签 javascript html peerjs

我正在尝试将一个对象从一个 html 页面发送到另一个 js 页面。 我尝试发送的对象是由下面代码中提到的peer.js生成的
对象中的键值对看起来与普通对象不同

下面是示例代码
第一页.html

<script src="https://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.16/peer.min.js"></script>
<button onclick="myfunction()">Click me</button>
<script>
function myfunction(){
    var peer = new Peer("id", {host: '192.168.1.14', port: 9002}); //peer is object that i'm trying to pass which will  be //created while declaring the object
    localStorage.setItem("sendingObject", peer); // i have tried here setItem to send it to the other page
    url = 'someURl/secondPage.html?name='+ encodeURIComponent(peer);
    document.location.href = url;
}
</script>

console.log(peer)显示在下面

{options: {…}, destroyed: false, disconnected: false, open: false, connections: {…}, …}

Screen Shot from chrome

第二页.html

<script>
window.onload = function () {
    var url = document.location.href,
    params = url.split('?')[1].split('&'),
    data = {}, tmp;
    for (var i = 0, l = params.length; i < l; i++) {
    tmp = params[i].split('=');
    data[tmp[0]] = tmp[1];
    }

    name=data.name;
    console.log(name);

    var localObj = (localStorage.getItem("sendingObject")); // here retrieving from the setItem
    console.log(localObj);
}
</script>  

对于console.log(name) ---->它正在打印%5Bobject%20Object%5D
对于 console.log(localObj) ----> 它正在打印 [object Object]

最佳答案

本地存储仅支持字符串数据类型。因此,在保存到 LocalStorage 之前,您必须将其转换为 String:

localStorage.setItem('sendingObject', JSON.stringify(peer));

转换回JS对象,从LocalStorage读取

peer = JSON.parse(localStorage.getItem('sendingObject');

查看此thread关于如何在 localStorage 中存储函数

查看此thread关于如何重写 json stringify/parse 函数以传递 localStorage 中的函数

关于javascript - 如何发送其中包含函数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103910/

相关文章:

javascript - 向有页脚的表格添加滚动条

javascript - 如何从文本中删除下划线 (_)

Javascript 幻灯片在一次迭代中不显示图像

javascript - iceConnectionState 已断开连接 - VP9 编码为空 - PeerServer

javascript - PeerJS 或 WebRTC 对等连接是否需要服务器或仅在客户端之间?

javascript - 动态创建删除按钮

javascript - forEach 不是函数错误

javascript - 想把处理类型改成js

css - Bootstrap 重新排序适用于 3.0,不适用于 3.1.1

javascript - 通过PeerJS接收数据