How to send an Object which has functions in it

function inside object javascript
call function inside object javascript
function in object javascript
javascript add function to object
passing object by reference c++
how to pass class object as parameter in java
javascript pass object to function by reference
c++ pass object by value

I'm trying to send an object from one html page to another in js. The Object that i'm trying to send is generated by peer.js mentioned in the below code The key value pair in the object looks different from normal objects

below is the sample code Firstpage.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) is displayed below

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

secondPage.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>  

For console.log(name) ----> it is printing %5Bobject%20Object%5D For console.log(localObj) ----> it is printing [object Object]

Local storage only supports string datatype. So you have to convert it to String before saving to LocalStorage:

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

Convert back to JS object, reading from LocalStorage

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

See this thread on how to store functions in localStorage

See this thread on how to overrride the json stringify/parse function to pass functions in localStorage

JavaScript Function Objects, Inside the function, the integer value of the argument object is added to that on which the 'add' function is called. In this method, we can pass objects as an  Pass by const Pointer This passes a const pointer to the object to the function. You cannot modify/reassign the pointer here. This is useful if you want the function to have only the address of this object in the pointer.

When you store something in localStorage it is implicitly converted to a string, and if you run console.log(peer.toString()) in the first page you will see the output [object Object].

From what I can see you would be better off storing the values needed to recreate the peer object on the second page, e.g.

localStorage.setItem('peerId', 'id');
localStorage.setItem('peerHost', '192.168.1.14');
localStorage.setItem('peerPort', '9002');

And then on the second page:

const peerId = localStorage.getItem('peerId');
...
const peer = new Peer(peerId, ...);

You could also serialize the data using JSON.stringify() and JSON.parse() which allows you to serialize objects to and from strings in a standard, well supported fashion, e.g.

// On the first page
localStorage.setItem('peer', JSON.stringify(peer));

// On the second page
const peerData = localStorage.getItem('peer');
const peer = JSON.parse(peerData);

However, there are some gotchas that might bite you when serializing objects with functions/complex data across Window origins, so unless you know the objects were carefully written with cross origin use in mind, I'd suggest serializing the data required to reconstruct a new object in the second window.

Passing and Returning Objects in C++, Sometimes such functions are necessary, however, and you might consider creating a class whose sole purpose is to act like a Parameter Object. This approach  Example: In this Example there is a class which has an integer variable ‘a’ and a function ‘add’ which takes an object as argument. The function is called by one object and takes another as an argument. Inside the function, the integer value of the argument object is added to that on which the ‘add’ function is called.

Do you generally send objects or their member variables into , We'll understand how to work with it, how to get benefits and avoid problems. Arrow functions have no “this”. Arrow functions are special: they don  Objects can be treated as functions means that they can be called by using round paranthesis (), just like a function. This can be done by defining a __call__ function inside the object. Let’s

Object methods, "this", There are four ways of passing objects to functions. Let's assume you have a class X and want to pass it to a function fun, thenPass by  Using a JSON serializer (as you do) is IMHO the best and most secure way of sending entire object graphs from the server to a client side method. It will take care of properly encoding all dangerous characters that might be contained and thus ensuring that the client side won't break, it protects from XSS and it also preserves arrays.

How to pass objects to functions in C++ Program?, In this program, the sum of complex numbers (object) is returned to the main() function and displayed. #include <iostream> using namespace std; class Complex  Debouncing ensures that a function will not be executed until after a certain amount of time has passed since it was last called. This can be useful when you have to perform some expensive calculation in response to an event that might dispatch rapidly (eg scroll or keyboard events).

How to pass and return object from a function in C++?, In this tutorial we will see how to pass an object to a function as an argument Here in class A we have a function disp() in which we are passing the object of  Note. Use the GetObject function when there is a current instance of the object or if you want to create the object with a file already loaded. If there is no current instance, and you don't want the object started with a file loaded, use the CreateObject function.

Comments
  • You cannot store functions on LocalStorage. LocalStorage basically stringify the Object and then store it.
  • I did that and this is the error that i got for it : Uncaught TypeError: Converting circular structure to JSON
  • You have to either override the get and set functions or you have to follow the mentioned thread, passing functions is forbidden normally
  • so it is not possible for me to send an object which has functions in it to another html page using js?
  • It is possible, in my comment I wrote two viable solutions :)