Javascript 闭包和内存问题

2024-01-27

//Following function add new table entry to table
//and return interface which has function which uses closure to access and update the table
var _newRow  = (function(){
    var _interface = {
        updateName: null,
        updateProgress: null,
        actionLinkButton : null,//<a> tag used for user aciton to perform on UI like delete, hide, show etc.
        ..
        ..
        ..
    };
    var tr = createTr();    
    var tdName = createTd();
    _inteface.updateName = function(newName){
        tdName.innerHTML = newName;
    }
    ..
    ..
    ..
    ..
    ..  
    return _interface;
})(tblObject);

//maintaining the array of all the rows as per row number
rowArray[rowNo] = _newRow;
..
..
//using the row array to update the entries
rowArray[rowNo].updateProgress('read');

上面是我用来更新客户端动态添加的行的模式。我所做的就是在向表中添加行时创建 _interface,返回它并根据行号存储它。

然而,为此我使用了闭包意味着许多活着的对象。我想知道这是正确的方法吗?还有比这更好的方法吗?我可以使用哪些分析工具来了解此代码使用了多少内存?我怎样才能确保在不需要时正确清除关闭件?


JavaScript 有一个垃圾收集器,它会收集杂散对象并自动为您释放它们。没有办法控制何时或如何。

当您拥有全局可访问的对象引用具有词法作用域的函数时,可能会阻止对象/闭包被垃圾收集。确保分离所有不使用的值(例如,从 DOM 中删除它们)。如果您确定无法访问这些值,它们最终将被垃圾收集。

要识别内存泄漏,重要的是不要过早优化,您可以监视 Web 浏览器的内存使用情况。如果那里不明显,那么您可能不需要担心。你可能想在你的应用程序中模拟很多操作,看看应用程序运行很长时间后的状态会是什么样子。

但一般来说,不用担心内存使用情况。根据我的经验,这很少是一个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 闭包和内存问题 的相关文章

  • 为任何更新查询增加 Mongoose 文档版本的简单方法?

    我想开始利用 Mongooses 文档版本控制 v key 我在实际增加版本值时遇到了问题 然后我发现您必须添加this increment 执行查询时 有没有办法自动递增 目前 我只是将其添加到pre用于更新类型查询的中间件 module
  • javascript/jquery 从选择中删除或删除选项

    在某些情况下 我需要从选择中删除选项 基本上 if mystatement true remove item with id option1 from select of id select1 有人知道我可以实现这一目标的代码吗 非常感谢
  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 我可以通过什么方式混合 jQuery 和 vanilla JavaScript

    我有一个用普通 JavaScript 编写的 Web 应用程序 我想用 jQuery 动画来增强它 并使用我在各种 jQuery 插件中找到的一些功能 例如上传 http www uploadify com 可以通过什么方式将 jQuery
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • 获取被调用的 javascript 文件的查询字符串

    是否可以在调用的 javascript 文件上使用 javascript 获取查询参数 如下所示 in html in file js console log this location query 这是否可能以某种方式实现 或者我必须使用
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • 更新存储在 chrome 扩展本地存储中的对象

    我正在开发一个 chrome 扩展 我将存储服务器发送的对象 例如 我将收到 命令 id 1 类型 A 大小 B 优先级 C 如果我有一个数据库 我会将其作为表中的一行插入commands 使用 chrome storage 我将这些对象的
  • EmberJS:对象作为查询参数来刷新模型

    我遵循了查询参数指南 http guides emberjs com v1 11 0 routing query params http guides emberjs com v1 11 0 routing query params 而且效
  • 如何显示接下来的三个图像单击加载更多按钮

    我需要一个加载更多按钮来显示图像 页面加载时 我显示 3 个图像 单击 加载更多 按钮后 接下来的 3 个图像将显示在屏幕上 我尝试了下面的代码 但它不起作用 你能帮我解决这个问题吗 function item slice 0 2 show
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 如何在React中动态分配属性?

    这是一个有两个参数的函数 我要创建的标签的名称 具有以下属性的对象 Using React 我创建一个组件并将该元素渲染到 DOM 问题是我想向元素添加属性 但它不允许循环在元素内设置属性 var Element function elem
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • javascript - 如何获取对象名称或关联数组索引名称?

    我有一个像这样的 JSON 对象 var list name1 element1 value1 name2 element1 value2 如何提取所有 nameX 字符串值 例如 假设我想将它们连接在一个字符串中输出 例如 name1 n
  • 为什么 JavaScript 中是 [1,2] + [3,4] = "1,23,4" ?

    我想将一个数组的元素添加到另一个数组中 所以我尝试了以下方法 1 2 3 4 它的回应是 1 23 4 到底是怎么回事 The 操作员没有为数组定义 发生的事情是 JavaScript将数组转换为字符串并将它们连接起来 Update 由于这
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 列出 R 闪亮服务器上应用程序中的对象内存使用情况

    我一直在尝试显示在 R Shiny Server 上运行时 R Shiny 应用程序中使用的每个对象的内存使用情况 以便识别内存泄漏 在 R 中 我可以调用ls or objects 并获取所有这些信息 一旦我尝试在闪亮的应用程序中显示此信
  • 使用 ORDER BY 时出现数据类型不匹配错误

    我有一个使用本地 sqlite 数据库的 Android 应用程序 private SQLiteDatabase mDb 当我运行此查询时 我将光标移到 pid 等于 id 的行上 根据需要 mDb query true PT TABLE
  • 使用 numpy (或其他向量化方法)优化此函数

    我正在用Python计算群体遗传学领域的经典计算 我很清楚有很多算法可以完成这项工作 但出于某种原因我想构建自己的算法 下面一段是图片 因为 StackOverflow 不支持 MathJax 我想要一个有效的算法来计算这些Fst 目前我只
  • 如何切换猫鼬数组中的布尔值?

    我想切换模式数组中的布尔值 我正在尝试使用数据库中存在的值切换该值 请参阅代码 但只是真变假 而不是假变真 以下是代码 exports postStatusItemchange req res next gt const productId
  • Jetpack Compose 滚动条

    有没有办法添加滚动条来添加LazyColumn ScrollableColumn已弃用 Javadoc 没有提及 Jetpack Compose 中有关滚动条的任何内容 Just to clarify this is the design
  • 数据添加到QLineSeries后如何更新/重绘QChart?

    我正在生成一些我想用来绘制图表的数据QChart 朋友们 这是我第一次使用QChart 所以基本上我所做的就是复制QLine系列示例 https doc qt io qt 5 qtcharts linechart example html并
  • 如何在Android弹出菜单中设置默认选择的选项?

    我使用以下代码来创建菜单 PopupMenu popup new PopupMenu getApplicationContext v MenuInflater inflater popup getMenuInflater inflater
  • 如何使用ggplot2将x轴从年更改为月

    我有一个随时间变化的网络访问量图表 其中绘制了从 2014 年至今的每日流量 如下所示 ggplot subset APRA Post Day gt 2013 12 31 aes x Post Day y Page Views geom l
  • php从同一浏览器和同一php脚本同时下载文件

    你好 我有这个简单的代码 强制随机文件下载 我的问题是 如果我从同一个浏览器调用脚本两次或多次 第二次下载将不会开始 直到第一次完成或中断 因此我每次只能下载一个文件 你有什么线索吗 这可能与PHP的会话处理有关 使用默认的会话处
  • Chrome 中的窗口高度错误

    我正在尝试获取 Chrome 浏览器窗口的正确宽度和高度 Firefox 中的大小是正确的 我没有尝试过任何其他浏览器 我已将文档类型设置为 DOCTYPE html并尝试过 window height window width windo
  • 在自定义活动中绘制 TextView?

    我正在实施一个自定义View 我需要在其中绘制一些文本 文本必须适合一个盒子 所以我必须将其分解并使其适合 因此 我想我可以使用TextView并在我的自定义中绘制它View 这是我尝试过的 canvas drawRoundRect rec
  • 如何在 Two.js 中解释外部 svg 文件

    有什么方法可以在two js 中解释带有对象标记的外部svg 文件吗 我尝试了下面的方法但是 HTML JS var mySvg document getElementById mysvg contentDocument var shape
  • Maven Dll依赖问题

    我正在开发一个基于 swing 的桌面应用程序 该应用程序使用 MediaInfo dll 库 我首先像描述的那样将此 dll 安装到我的本地存储库这个答案 https stackoverflow com questions 1001774
  • java中导入语句的顺序[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 想知道 哪种是订购导入声明的正确方法 另外哪个具有更高的可读性 like 外部课程 如java util List 然后是内部包类 仅按字母顺序
  • Tensorflow 中 sess.run([op1, op2...]) 的顺序

    我想知道 sess run ops list 中操作列表的运行顺序是什么 例如 对于典型的分类场景 loss sess run train op loss op if train op先运行 那么损失就是当前反向传播之后的损失 但如果los
  • Python,导入错误:未定义的符号:g_utf8_skip

    StackOverflow 上大约有几十个类似的问题 但经过几个小时的潜伏 我终于放弃了 所以我正在尝试为Python编写一个C扩展 我们就这样称呼它吧mylib 这是头文件 mylib h ifndef mylib H define my
  • 如何使用 JSqlParser 添加新条件?

    我想向我的 sql 添加新条件 例如如果查询是 SELECT EMP ID FIRST NAME FROM EMPLOYEES 我可以使用此代码添加新的原因 Override protected void setLimit final Pl
  • 通过应用自定义 css 类禁用 html 输入元素

    我想通过应用我的自定义 css 类来禁用 div 的所有输入元素 但我找不到任何可以禁用输入元素的 css 属性 目前我在做什么 div sercvice detail input attr disabled true retention
  • 找不到 Webpackject.preload.js 文件[重复]

    这个问题在这里已经有答案了 我将 Vue Typescript 与 webpack 结合使用 每次我打开页面inject preload js抛出一个错误 例如GET blob http URL 1fbc0606 8477 416b a45
  • Javascript 闭包和内存问题

    Following function add new table entry to table and return interface which has function which uses closure to access and