当前位置:首页>开发>正文

jquery 源码 jQuery源码中createOptions函数的问题

2023-04-11 04:30:44 互联网 未知 开发

jquery 源码 jQuery源码中createOptions函数的问题

jQuery源码中createOptions函数的问题

var object = optionsCache[ options ] = {}这里是一个指针引用,两个对象指向同一个地方,所以给object赋值等同于给optionsCache赋值。

你在each外单独给object赋值,是重新赋值一个对象给它,改变了引用,两个指针指向已经不是同一个地方,故optionsCache不会改变。
如果想在each外通过改变object对象来修改optionsCache值,应该是通过改变属性的方法如object["once"]=false这样optionsCache的值会同时改变。

举个指针对象的例子如下:

var temp = { name: "temp" }
var temp2 = temp
temp = { name: "not temp2" } //修改了temp的引用
temp === temp2 //false

var temp = { name: "temp" }
var temp2 = temp
temp.name = "also
temp2" //修改的只是指针指向的实例本身
temp === temp2 //true

如何阅读jQuery源码整体架构

jQuery是业界最流行的JavaScript库,其API非常精致和优雅,但是jQuery的源码却庞大且晦涩难懂,在本书开始写作时发布的1.7.1版本有9266行代码,涉及17个模块,读起来常常是一头雾水、有心无力。本书尝试对jQuery的源码进行系统、完整的介绍和分析,阐述jQuery的设计理念、实现原理和源码实现。

  在2010年参与了一款卫星机顶盒用户界面的设计和开发,程序运行在机顶盒中间件供应商提供的一款定制浏览器上,在开发过程中,发现这款浏览器的行为类似于古老的IE 5,各种缺陷和bug折磨得笔者苦不堪言,所以希望引入jQuery作为基础库,并开发一些通用组件和接口来简化开发过程,可是很快又发现这款浏览器对正则表达式的支持非常粗糙,导致选择器引擎Sizzle根本无法运行。此时,对jQuery进行简单改造已经满足不了需求。
然而令人惊艳的是,这款浏览器提供了与操作系统、文件系统、中间件、播放器、智能卡和卫星接收器等交互的JavaScript API,例如,待机&关机、文件读写、计费、卫星锁频、数据接收等。鉴于这种复杂的体系架构,以及对浏览器缺陷的完善也非短期可以完成,开始为这款机顶盒浏览器移植jQuery,从而开始了对jQuery源码的学习和分析。