search
HomeWeb Front-endJS TutorialUnderstand JS memory life cycle, stack memory and heap memory, deep and shallow copy in JS series (2) on one piece of paper

Understand JS memory life cycle, stack memory and heap memory, deep and shallow copy in JS series (2) on one piece of paper

Write at the front: Under the javascript column, this is a series I am about to start writing, mainly in the era of rampant frameworks, even though I am at work A framework is used, but for interviews and technical advancement, the foundation of basic JS knowledge is the icing on the cake, and it is also a piece of knowledge that must be learned. Although car drivers do not need to know much about cars, they only need to master the common functions of cars. But if you know cars, you can drive better, and by the same token. Of course, an article will not just talk about one knowledge point. Generally, related knowledge points will be connected in series. While recording your own learning, you will share your own learning and encourage each other! If you can, please also please give me a like, your likes will also make me work harder to update!

Overview

  • Eating time: 6-12 minutes
  • Difficulty: Easy, don’t run, watch before leaving

JS memory life cycle

  • Allocating memory

  • Memory reading and writing

  • Release memory

Stack memory and heap memory

JS data types

Before talking about stack memory and heap memory, everyone should We all know that JS is divided into two data types:

  • Basic data type

    String, Number, Boolean, null, undefined, Symbol (fixed size, volume Lightweight, relatively simple)

  • Reference data type

    Object, Array, Function (The size is not necessarily certain, it takes up a large space, and it is relatively complex )

Memory storage mechanism

var a=true;      //布尔型,基本数据类型var b='jack';    //字符型,基本数据类型var c=18;        //数值型,基本数据类型var d={name:'jack'};   //对象,引用数据类型var d=[0,1,2,3,4,5];   //数组,引用数据类型复制代码

It is precisely because of the different data types that their storage methods are also different, just like the poor and the rich in real life People’s residences are completely different (distant). Let’s take a look at a picture first:

Understand JS memory life cycle, stack memory and heap memory, deep and shallow copy in JS series (2) on one piece of paper

You can see that a , b , c are all basic Data types, d and e are both reference data types. They have essential differences in storage methods. The values ​​of basic data types are stored in stack memory, while The value of the reference data type is stored in the heap memory. The stack memory only stores its reference in the stack memory (that is, its address in the heap memory). Just like its name, the reference data type

Memory access mechanism

The above is about storage. Next, let’s talk about variable access. Basic data types can directly access the value of variables from the stack memory, while reference data types must first access the variables from the stack memory. Find its corresponding reference address in the stack memory, and then take this reference address and search it in the heap memory to get the value of the variable

deep-shallow copy

  • shallow Copy

    I have already told you about the difference in storage between basic data types and reference data types. So, the deep and shallow copy mentioned next, I believe you often encounter it in interview questions, the old way , first look at a piece of code

    var name='jack';var obj={  age:24};var nameCopy=name;var objCopy=obj;
    
    nameCopy='bob';
    objCopy.age=15;console.log(name);    //jackconsole.log(obj.age);     //15复制代码

    You will find that name is not affected, and our naming is to modify objCopy.age, why is it still affected? obj.age, this is because of the problem of dark and shallow copying. Let’s take a look at the picture below

Understand JS memory life cycle, stack memory and heap memory, deep and shallow copy in JS series (2) on one piece of paper
# #The reason why this happens is that for basic types and reference types in JS, when we copy the reference type, what is copied is the reference address of the object, so when executing

var objCopy=obj; , the reference address of obj is copied to objCopy, so the two objects actually point to the same object, that is, the change objCopy also changes the value of obj. We call this situation shallow copy. It only copies the reference of the object and does not open a new one. The memory is short-handed and the copy space is too shallow. (Shallow copy will only occur with reference types)

  • Deep copy

    Let’s look at the next piece of code

    var name='jack';var obj={  age:24};var nameCopy=name;var objCopy=JSON.parse(JSON.stringify(obj));
    
    nameCopy='bob';
    objCopy.age=15;console.log(name);    //jackconsole.log(obj.age);     //24复制代码

    It can be found that after the conversion through

    JSON.parse(JSON.stringify(obj)), the shallow copy no longer exists. This wave is deep copy, deep copy development A new heap memory address is obtained, and the reference of the object points to the newly opened memory address. It is completely independent from the previously copied object. It is self-reliant and copied deeply. Learn the skills and master the skills. a feeling of.

  • 另外实现深拷贝的方法(更多方式请自行百度)

    var objCopy=Object.assign({},obj);   //对象深拷贝的方法 Object.assign
    var arrayCopy=array.concat();       //数组深拷贝的方法  concat()  (数组无嵌套对象或者数组可用)
    var arrayCopy=array.slice();       //数组深拷贝的方法  slice()   (数组无嵌套对象或者数组可用)
    JSON.parse(JSON.stringify(array))     //顺带提下,JSON.parse(JSON.stringify())   数组和对象通用复制代码

    接着上面的数组容易踩坑的地方 ,来看一个例子

    var array = [{name: 'jack'}, ['old']];var arrCopy = array.concat();
    arrCopy[0].name='new';console.log(array); // [{name: 'new'}, ['old']]console.log(arrCopy); // [{name: 'new'}, ['old']]复制代码

    可以清楚地看到(数组无嵌套对象或者数组可用的情况下用 concatslice 才有效)

系列目录

更多相关免费学习推荐:javascript(视频)

The above is the detailed content of Understand JS memory life cycle, stack memory and heap memory, deep and shallow copy in JS series (2) on one piece of paper. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:juejin. If there is any infringement, please contact admin@php.cn delete
Replace String Characters in JavaScriptReplace String Characters in JavaScriptMar 11, 2025 am 12:07 AM

Detailed explanation of JavaScript string replacement method and FAQ This article will explore two ways to replace string characters in JavaScript: internal JavaScript code and internal HTML for web pages. Replace string inside JavaScript code The most direct way is to use the replace() method: str = str.replace("find","replace"); This method replaces only the first match. To replace all matches, use a regular expression and add the global flag g: str = str.replace(/fi

Custom Google Search API Setup TutorialCustom Google Search API Setup TutorialMar 04, 2025 am 01:06 AM

This tutorial shows you how to integrate a custom Google Search API into your blog or website, offering a more refined search experience than standard WordPress theme search functions. It's surprisingly easy! You'll be able to restrict searches to y

Build Your Own AJAX Web ApplicationsBuild Your Own AJAX Web ApplicationsMar 09, 2025 am 12:11 AM

So here you are, ready to learn all about this thing called AJAX. But, what exactly is it? The term AJAX refers to a loose grouping of technologies that are used to create dynamic, interactive web content. The term AJAX, originally coined by Jesse J

Example Colors JSON FileExample Colors JSON FileMar 03, 2025 am 12:35 AM

This article series was rewritten in mid 2017 with up-to-date information and fresh examples. In this JSON example, we will look at how we can store simple values in a file using JSON format. Using the key-value pair notation, we can store any kind

8 Stunning jQuery Page Layout Plugins8 Stunning jQuery Page Layout PluginsMar 06, 2025 am 12:48 AM

Leverage jQuery for Effortless Web Page Layouts: 8 Essential Plugins jQuery simplifies web page layout significantly. This article highlights eight powerful jQuery plugins that streamline the process, particularly useful for manual website creation

What is 'this' in JavaScript?What is 'this' in JavaScript?Mar 04, 2025 am 01:15 AM

Core points This in JavaScript usually refers to an object that "owns" the method, but it depends on how the function is called. When there is no current object, this refers to the global object. In a web browser, it is represented by window. When calling a function, this maintains the global object; but when calling an object constructor or any of its methods, this refers to an instance of the object. You can change the context of this using methods such as call(), apply(), and bind(). These methods call the function using the given this value and parameters. JavaScript is an excellent programming language. A few years ago, this sentence was

Improve Your jQuery Knowledge with the Source ViewerImprove Your jQuery Knowledge with the Source ViewerMar 05, 2025 am 12:54 AM

jQuery is a great JavaScript framework. However, as with any library, sometimes it’s necessary to get under the hood to discover what’s going on. Perhaps it’s because you’re tracing a bug or are just curious about how jQuery achieves a particular UI

10 Mobile Cheat Sheets for Mobile Development10 Mobile Cheat Sheets for Mobile DevelopmentMar 05, 2025 am 12:43 AM

This post compiles helpful cheat sheets, reference guides, quick recipes, and code snippets for Android, Blackberry, and iPhone app development. No developer should be without them! Touch Gesture Reference Guide (PDF) A valuable resource for desig

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft