码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaScript从入门到精通系列第二十二篇:JavaScript中的toString方法和JavaScript中的垃圾回收


    文章目录

    一:toString方法

    1:怪异的返回值[object Object]

    2:打印对象成为一个JSON

    二:垃圾回收(GC)

    1:垃圾回收概念

    2:JS当中的垃圾回收机制

    3:JS中的垃圾回收算法


    一:toString方法

    1:怪异的返回值[object Object]

             当我们直接在浏览器中console.log()一个对象的时,事实上是输出对象的toString()方法的返回值。

            现在这个[object Object]就是toString对象的返回值。这里边用的是Object对象的原型对象的toString方法。

    1. function Person(name,age,gender){
    2. this.name = name;
    3. this.age = age;
    4. this.gender = gender;
    5. }
    6. //创建一个Person实例
    7. var per = new Person("孙悟空",18,"男");
    8. console.log(per);

             证明这件事情: 

            

    2:打印对象成为一个JSON

            我们只需要给Person对象的原型对象当中增加自定义toString()方法。

    1. function Person(name,age,gender){
    2.     this.name = name;
    3.     this.age = age;
    4.     this.gender = gender;
    5. }
    6. //创建一个Person实例
    7. var per = new Person("孙悟空",18,"男");
    8. console.log(per);
    9. Person.prototype.toString = function (){
    10. return "Person[name = "+this.name+"]";
    11. }

            实践结果: 

    二:垃圾回收(GC)

    1:垃圾回收概念

            人生活的时间长了,就会产生垃圾。对象也一样,当一个对象没有任何变量或者属性对他进行引用,那么这个对象就是垃圾。这种对象过多,会占用大量的内存空间,导致内存运行变慢,甚至内存溢出等情况发生。

    2:JS当中的垃圾回收机制

            JavaScript中的垃圾回收机制是指当不再需要某个变量或对象时,JavaScript引擎会自动回收其占用的内存空间。在JavaScript中,需要执行以下步骤来清理不再使用的内存:

             需要注意的是,由于JavaScript是一门动态语言,变量的类型和值可能会发生变化,这也可能会影响垃圾回收机制的运行。此外,如果某个变量被其他变量所引用,即使没有被直接访问,垃圾回收机制也不会自动回收其占用的内存空间。因此,在编写JavaScript代码时,应当注意避免不必要的变量引用,以便垃圾回收机制能更好地清理不再使用的内存空间。

    3:JS中的垃圾回收算法

            JS中的垃圾回收算法是指JavaScript引擎通过一系列算法,自动回收不再被程序使用的内存。常见的垃圾回收算法有:

    1. 引用计数算法:每个对象有一个计数器,记录有多少个引用指向该对象。当引用计数归零时该对象即被回收。但是该算法无法处理循环引用的情况,容易出现内存泄漏。

    2. 标记清除算法:从根对象开始,标记所有可以访问到的对象,在标记完成后,清除所有未被标记的对象。该算法可以处理循环引用的情况,但会造成一定的性能损失。

    3. 分代收集算法:将内存划分为几代,每次垃圾回收时,只清除年龄较大的对象。年龄较小的对象被认为是生命周期较短的,不需要进行频繁的垃圾回收。该算法通常应用于长时间运行的JS应用,提高了运行效率。

            总的来说,垃圾回收算法是JavaScript引擎的重要组成部分,它可以保证程序运行过程中不会因为内存泄漏而产生错误。不同的算法有不同的优缺点,选用合适的算法可以提高程序的运行效率。

  • 相关阅读:
    【C++】内存管理——我要new一个对象
    高效畅通的iOS平台S5配置指南
    上班干,下班学!这份 Java 面试八股文涵盖 20 多个技术点,还有优质面经分享,别再说卷不过别人了~
    【学习挑战赛】经典算法之直接插入排序
    Dreamweaver网页设计与制作100例——HTML5期末考核大作业——票务网站整套网页
    [PAT练级笔记] 12 Basic Level 1014
    【DSCTF2022】pwn补题记录
    YOLOv8血细胞检测(12):EMA基于跨空间学习的高效多尺度注意力、效果优于ECA、CBAM、CA | ICASSP2023
    视口坐标转换成Canvas下本地坐标与shader显示在3D物体前
    RocketMQ之NameServer源码分析
  • 原文地址:https://blog.csdn.net/Facial_Mask/article/details/133966060
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号