JavaScript从入门到精通系列第二十二篇:JavaScript中的toString方法和JavaScript中的垃圾回收

news/2025/2/12 3:18:44/

文章目录

一:toString方法

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

2:打印对象成为一个JSON

二:垃圾回收(GC)

1:垃圾回收概念

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

3:JS中的垃圾回收算法


一:toString方法

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

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

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

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

         证明这件事情: 

        

2:打印对象成为一个JSON

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

function Person(name,age,gender){this.name = name;this.age = age;this.gender = gender;
}//创建一个Person实例
var per = new Person("孙悟空",18,"男");
console.log(per);Person.prototype.toString = function (){return "Person[name = "+this.name+"]";
}

        实践结果: 

二:垃圾回收(GC)

1:垃圾回收概念

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

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

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

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

3:JS中的垃圾回收算法

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

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

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

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

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


http://www.ppmy.cn/news/1168095.html

相关文章

来看看如何使用CLOUDFARE_实现网络聚合_利用安全的网络协议实现网络通讯---工具箱工作笔记002

下面这个操作是需要进行安全网络下操作的 首先需要去访问https://1.1.1.1这样一个网站然后去下载对应的软件,安装上 首先进入这个网址 www.cloudflare.com 去点击注册 注册以后 然后登录,登录以后,然后左侧有个zero trust 然后再去写一个名字,团队的名字 然后选择也是免…

四川农业大学就业指南←缺失的就业指导课

推荐 125页就业指南, 包含就业去向、就业政策介绍, 也有毕业生常见问题, 就业协议与劳动合同的阐释, 帮助毕业生系统梳理庞杂的各类就业信息, 人文温度冲淡就业惨淡的灰冷阴霾。 有这样一群人,在2023&…

【算法|动态规划No.28】leetcode1312. 让字符串成为回文串的最少插入次数

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

ElementPlus表格中的背景透明

ElementPlus表格中的背景透明 最近写大屏,用到elementplus中的el-table,为了让显示效果好看一点,需要把表格的白色背景调整为透明,与整个背景融为一体。可以参考的资料非常少,大部分都是ElmentUI的方法,在…

标识符与关键字

[TOC]基础知识 标识符 由数字、字母、下划线组成不能以数字开头不能是C语言关键字C语言区分大小写 C语言关键字 数字类型关键字 char int short long float double signed unsigned struct union enum void 存储类型关键字 auto register static extern流程控制关键字 …

第三章 内存管理 十二、请求分页管理方式

目录 一、页表机制 1、页表结构 二、缺页中断机制 1、有如下例子 2、根据要访问的逻辑地址的页号2,找到该页的状态是没有放入内存,所以会产生缺页中断,将缺页进程堵塞,放入堵塞队列,调页完成后再将其唤醒&#xf…

01、字符传实现为什么是SDS而不是char*?

问题: 1. sds 是什么 ? 2. sds 相对于char * 有什么好处 ?解决了哪些疑难杂症? 3. sds 有什么不足?可以优化的点? 思考下: 平常工作开发中,我们记录一条用户信息、订单信息&…

C# CodeFormer Colorization 人脸着色

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace CodeFormer_D…