Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于集合的live与static

  如果集合内的元素会因环境的变化而变化,那么我们就称这个集合是live的,否则就称这个集合是static的。通常live的集合都是由一个描述来概括集合中的所有元素,而static集合中的每个元素都是货真价实的元素,不是用描述概括出来的。
  比如一个集合“A={中国的直辖市}”和另一个集合“B={北京,上海,天津,重庆}”。A和B两个集合表达的东西目前是一样的,但是A集合无法在时间上保证自己的元素是什么,所以它是live的。而B集合即使以后直辖市的数量增加或减少了也不会有影响,它就是static的。所以集合A与B是不同的。
  那么假如现在有集合“C={中国的直辖市}”,那么A和C是同一个集合吗?在任何情况下,A和C都有相同的内容,那么它们就是同一个集合。所以A和C是同一个集合。但是如有现在又有个集合“D={北京,上海,天津,重庆}”,它和B是同一个集合吗?虽然这两个集合在数学上可以划等号,但是如果考虑上时间和环境,情况就不同了。因为B和D都是定态的(我可以说波函数是坍缩的吗←_←),无法确定他们是否相同,但是不同的概率趋向于无穷大,所以视为不同来处理。这样,逻辑就完整了。
  所以有 document.getElementsByTagName("div")==document.getElementsByTagName("div"); //true
[]==[]; //false
document.querySelectorAll("div")==document.querySelectorAll("div"); //false
  “document.getElementsByTagName("div")”就是得到一个live集合“{document内的所有div}”,后面的“[]”就不用说了吧,普通的数组而已。最后的“document.querySelectorAll("div")”这是规范给定义的它必须返回static的集合,因为选择器的复杂程度是无法估计的,如果返回live集合将出现无法估计的性能开销。所以“querySelectorAll”定义为只在调用时做一次选择,并返回选中后的static元素集合。
  这是个逻辑概念问题,不限于解决某一个问题。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^