jQuery expando属性

我对jQuery expando属性有疑问。 基本上我想用非常简单的术语来理解:

  1. 整个过程如何工作,就像jQuery如何添加expando属性一样,
  2. 将它添加到任何元素的标准是什么
  3. 使jQuery轻量化的确切原因是什么?
  4. jQuery缓存到底有什么作用?

问题3似乎不合适,但其余部分:

  • jQuery.expando是一个字符串,基本上是'jQuery' + uniqueid (只是一个唯一值)

在1.4.4版之前,uniqueid是current timestamp

在版本1.5.1之后,uniqueid是version+Math.random() ,替换了点。 要清楚, "jQuery" + ( version + Math.random() ).replace( /\D/g, "" )

  • jQuery.cache是一个存储数据值的对象

  • Element[ jQuery.expando ]是一个int值/ key,它是对象存储在jQuery.cache

  • jQuery.cache[ Element[ jQuery.expando ] ]是该元素数据道具的对象

看看这个,看看我的意思