DEV Community

Cover image for Important Javascript functions you have to know to be a better developer

Important Javascript functions you have to know to be a better developer

Sam Sonter on March 05, 2022

Hi everybody, today I am going to show examples of few important Javascript functions. DEEP COPY JavaScript allows you to deep copy an ...
Collapse
 
_genjudev profile image
Larson • Edited

You should not use JSON.stringify to clone object. It leads to problems because it can't strinigfy functions,symbol etc.

JSON.stringify({ 
    fun: () => console.log('lol'), 
    s: Symbol(), 
    u: undefined, 
    n: NaN, 
    in: Infinity
})
'{"n":null,"in":null}'
Enter fullscreen mode Exit fullscreen mode

Just use lodash. Or write your own deep cloning algo. Or when using the browser you can use structuredClone (there are some limits too).

Collapse
 
peerreynders profile image
peerreynders

Node.js 17.0.0 added structuredClone(value[, options])

Before that use v8.serialize(value) and v8.deserialize(buffer).

Then there is flatted which adds recursive references and RecursiveMap on top of JSON (still no functions, symbols, etc.).

Collapse
 
asapsonter profile image
Sam Sonter

noted. thanks

Collapse
 
asapsonter profile image
Sam Sonter

noted. thanks

Collapse
 
tamirazrab profile image
Tamir

"And you can google any of these if needed." reading relaxed me instantly.

Collapse
 
jacksonkasi profile image
Jackson Kasi

wow, thanks, it's really helpful for me :)

Collapse
 
curiousdev profile image
CuriousDev

Thank you and I would like to add, that creating a clone with JSON object (with parse and stringify) has some limitations! It will not work with every object.

Collapse
 
codingjlu profile image
codingjlu

It's also important to remember that JSON.stringify cannot copy functions, so the "deep copy" only works for regular data types and objects.

Collapse
 
asapsonter profile image
Sam Sonter

hhahahhahah. what work, works

Collapse
 
mat3uszkek profile image
Mateusz Skrobiś

love that reply, thank u.

Collapse
 
risclover profile image
Sara (Risclover)

These seem useful. Thanks for posting!

Collapse
 
asapsonter profile image
Sam Sonter

you are welcome

 
sanzhardanybayev profile image
Sanzhar Danybayev

That's good too hear. I like your attitude. No offense. Might have misread your comment.

Collapse
 
insign profile image
Hélio oliveira

There is some typos. Like DECTECT , Andriod, prama, visiabilty.

Collapse
 
longcui profile image
Long Cui

The "Wait" function is wrong. Please see @luke shiru's comment.

Collapse
 
sanzhardanybayev profile image
Sanzhar Danybayev

Bro, you're a bit harsh. Though I would agree that title looks like a clickbait.

Collapse
 
asapsonter profile image
Sam Sonter

I dont mind criticism. Its ok

Thread Thread
 
sanzhardanybayev profile image
Sanzhar Danybayev

You're opened minded. Much respected!