JavaScript内存管理——隐藏类

这篇具有很好参考价值的文章主要介绍了JavaScript内存管理——隐藏类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据JavaScript所在的运行环境,有时候需要根据JavaScript引擎采取不同的性能优化策略。如果代码非常注重性能,那么隐藏类对我们是非常重要的。比如以下的代码:

function User() {
    this.name = "User Name";
}

let user1 = new User();
ler user2 = new User();

在上面的代码中我们创建了一个User类,JavaScript引擎会让user1,user2这两个类实例共享一个隐藏类,因为这两个类实例共享同一个构造函数和原型。我们继续往下添加以下代码:

user2.age = 18;

此时两个不同的类实例会对应两个不同的隐藏类,根据这类操作的频率和隐藏类的大小会对性能产生明显影响。

解决方案就是避免JavaScript的“先创造后补充”(ready-fire-aim)式的动态属性赋值,并在构造函数中一次性声明所有属性,如下所示:

function User(age) {
    this.name = "User name";
    this.age = age;
}

let user1 = new User();
let user2 = new User(18);

这样两个类实例就基本一致了,可以共享一个隐藏类。

注意:使用delete关键字会导致生成相同的隐藏类片段。

function User() {
  this.name = "User name";
  this.age = 18; } let user1 = new User(); let user2 = new User(); delete user2.age;

在这之后就算两个类实例使用了同一个构造函数,它们也不再共享一个隐藏类。最佳解决方法就是把不想要的属性设置为null。这样可以保持隐藏类继续共享不变,同时也能达到删除引用值供垃圾回收机制回收的效果。文章来源地址https://www.toymoban.com/news/detail-743047.html

到了这里,关于JavaScript内存管理——隐藏类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [javascript核心-08] V8 内存管理机制及性能优化

    V8 本身也是程序,它本身也会申请内存,它申请的内存称为常驻内存,而它又将内存分为堆和栈 栈内存介绍 栈用于存放JS 中的基本类型和引用类型指针 栈空间是连续的,增加删除只需要移动指针,操作速度很快 栈空间是有限的,若超出栈空间内存,会抛出栈空间溢出错误

    2024年02月16日
    浏览(59)
  • element ui根据复选框控制字段显示和隐藏

    复选框值为true和false,我这是默认为true,所有字段都显示,不勾选,则显示两个字段,根据if-else来控制,取值判断是否为true,true的话则显示,false则隐藏。 前端代码如下: template div class=\\\"app-container\\\" div class=\\\"mainbox\\\" div class=\\\"table-container table-fullscreen\\\" div class=\\\"table-opt-container

    2024年01月25日
    浏览(33)
  • <j-editable-table 根据 下拉框值 来隐藏 列

    this.meTable.columns[4].type = FormTypes.input this.meTable.columns[3].type = FormTypes.input

    2024年02月16日
    浏览(29)
  • VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

    针对用户使用销售订单时,根据定价和步骤顺序,判断是否有权限。此处通过有权限则隐藏价格的方式,隐藏销售订单抬头和行项目的部分价格数据 要限制的定价和步骤在spro中的位置 限制的步骤 创建带有定价和步骤的权限对象 分配权限给需要隐藏价格的用户 隐藏抬头和行

    2024年02月07日
    浏览(44)
  • html、javascript隐藏事件解释

    Javascript 是一种基于文本的编程语言,主要用于Web开发。它是WWW(万维网)的核心技术之一。 通过使用 Javascript,程序员可以创建交互式和响应式Web元素并增强网站的UI。Javascript 在客户端Web开发中非常流行,以至于互联网上超过97%的网站都将其用于客户端行为。弹出窗口、图像

    2024年02月02日
    浏览(54)
  • uniapp小程序,根据小程序的环境版本,控制的显页面功能按钮的示隐藏

    需求:根据小程序环境控制控制页面某个功能按钮的显示隐藏; 下面是官方文档和功能实现的相关代码: 实现上面需要,用到了uni.getAccountInfoSync(): uni.getAccountInfoSync() 是一个 Uniapp 提供的同步方法,用于获取小程序的帐号信息。它可以获取当前小程序的一些基本信息,例如

    2024年02月14日
    浏览(38)
  • JavaScript对象数组根据某个属性值筛选分类

    🤵 作者 : coderYYY 🧑 个人简介 :前端程序媛,目前主攻 web前端 ,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐 :《前端项目教程以及代码》 在开发中,这种需求还是挺常见的,常用于处理后端返回的数据

    2024年02月06日
    浏览(47)
  • JavaScript、微信小程序 根据汉字拼音首字母进行归类分组

    在微信小程序里面不支持这个localeCompare方法,所以有了下面的方法 我们需要一个 开源的汉字库 ,也就是码表。这个库就可以。git库 不想去git下载直接拉到最底下有js文件,直接复制就行。 然后页面引入 china.js代码

    2024年02月11日
    浏览(41)
  • JavaScript中删除两个数组对象中id相同的对象以及根据id删除数组中对象。

    1. filter方法 定义和用法 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 注意 : filter() 不会对空数组进行检测。 注意 : filter() 不会改变原始数组。 语法 参数说明 2. some方法 定义和用法 some() 方法用于检测数组中的元素是否满足

    2024年02月03日
    浏览(48)
  • JavaScript 内存泄漏

    分配内存 内存中的读写 垃圾回收 对于内存的使用,所有语言基本都是一样的,只是更底层的语言在对于 ”分配内存“ 和 ”使用内存“ 是明确的,但是在高级语言中(比如本文的 JS)是隐藏了。 JS 中在定义一个变量时,就已经分配好了一个内存; 同时,内部也提供好了垃

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包