• JavaScipt 源码解析 数据缓存


    常见的内存泄露的几种情况:

    循环引用 JavaScript闭包 DOM插入

    一个DOM对象被一个JavaScript对象引用,同时又引用同一个或其他的JavaScript对象,这个DOM对象可能回引发内存泄露,这个DOM对象的引用将不会再脚本停止的时候被垃圾回收器回收,要想破坏引用,引用DOM元素的对象或DOM对象的引用需要被赋值为null。

    多个对象循环引用

    var a = new Object;

    var b = new Object;

    a.r = b;

    b.r = a;

    循环引用自己

    var a = new object;

    a.r = a;

    循环引用很常见而且大部分情况下是无害的,但是参与循环引用的对象中有DOM对象或者Active对象时,循环引用将导致内存泄露

    静态和实例方法的区别

    jquery.data(ele)与$(ele).data()

    这两个函数都是用来在元素上存放数据,也就是平时说的数据缓存,都返回jquery对象,简单的来说:

    1.jquery.data()可以实现为dom元素或js对象添加缓存

    2,$("ele").data()是对jquery.data()的扩展,其目的是可以方便的通过选择器为多个dom元素添加缓存数据

     数据缓存,jquery现在支持两种:

    1,dom元素,数据存储在jQuery.cache中。

    2,普通js对象,数据存储在该对象中

    先首先先要在内存中开辟一个区域,用来保存数据,jQuery用cache对象{},那么所有的数据就是针对cache的curd操作了。

    1,如果是DOM元素,通过分配一个唯一的关联id把DOM元素和该DOM元素的数据缓存对象关联起来,关联id被附加到以Jquery.expando的值命名的属性上,数据存储在全局缓存对象jQuery.cache中,在读取,设置,移除数据时,将通过关联id从全局缓存对象jQuery.cache中找到关联的数据缓存对象,然后在数据对象上执行读取,设置,移除操作。

  • 相关阅读:
    34. 在排序数组中查找元素的第一个和最后一个位置
    153. 寻找旋转排序数组中的最小值
    278. 第一个错误的版本
    540. 有序数组中的单一元素
    744. 寻找比目标字母大的最小字母
    69. x 的平方根
    763. 划分字母区间
    53. 最大子序和
    665. 非递减数列
    Zabbix探索:Agent配置中Hostname错误引起的Agent.Ping报错
  • 原文地址:https://www.cnblogs.com/huangyin1213/p/6203772.html
Copyright © 2020-2023  润新知