首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么jQuery在开始时会有一个"window = this"并说它会加快对窗口的引用?

在这个问答内容中,我们将讨论jQuery为什么在开始时会有一个"window = this",并说它会加快对窗口的引用。

jQuery是一个流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画和AJAX交互。在jQuery的源代码中,"window = this"这一行代码出现在一个自执行匿名函数的闭包中。这个函数的目的是将jQuery的功能暴露给全局作用域,以便在浏览器环境中使用。

代码中的"window = this"实际上是将全局对象(在浏览器环境中是window对象)赋值给一个变量window。这样做的目的是为了加快对window对象的引用速度。在JavaScript中,全局对象是一个特殊的对象,它是所有全局变量和函数的容器。当我们在代码中引用全局对象时,实际上是在查找这个对象的属性和方法。通过将window对象赋值给一个变量,我们可以在代码中使用这个变量来访问window对象的属性和方法,而不是直接使用全局对象。这样做可以加快代码的执行速度,因为访问局部变量比访问全局对象要快得多。

总之,"window = this"这一行代码的目的是将jQuery的功能暴露给全局作用域,并加快对window对象的引用速度。这使得jQuery可以在浏览器环境中更高效地工作,为开发人员提供更好的用户体验和更快的代码执行速度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端学习资料整理

为什么要使用闭包?有什么优缺点? js垃圾回收机制 Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。...frame和window对象一个属性   self 当前窗口或框架同义词   status 状态条中消息   top 包含当前框架最顶层浏览器窗口同义词   window 当前窗口或框架同义词...1,总是从ID选择器开始继承 2,class前使用tag(标签名) 3,将jQuery对象缓存起来 4,直接DOM操作进行限制 5,冒泡 6,推迟到 $(window).load 7,压缩JavaScript...采用这种方法,页面就不会被脚本搞得一团糟,易于阅读,每个页面中,总可以一个位置找到脚本。 移动端点击事件有延迟,时间是多久,为什么会有? 怎么解决这个延时?...如果一个对象引用数量为 0(没有其他对象引用过该对象),或该对象惟一引用是循环,那么该对象内存即可回收。 setTimeout 一个参数使用字符串而非函数的话,会引发内存泄漏。

3.4K20

php基础(一)

> 结束符号,为什么? 主要防止 include,require 引用文件,把文件末尾可能回车和空格等字符引用进来,还有一些函数必须在没有任何输出之前调用,就会造成不是期望结果。...9.列举常用设计模式并说明?单例模式,观察者模式等等 单例模式 10.写一段代码,实现PHP内部通知机制,如当一个属性发生变化时,另外一个类就可以收到通知。...1.抽象主体(Subject)角色:主体角色将所有观察者对象引用保存在一个集合中,每个主体可以有任意多个观察者。 抽象主体提供了增加和删除观察者对象接口。主体也就是被观察者。...$(this) 和 this 关键字 jQuery 中有何不同? 一个jquery对象,一个是js属性 5.jsonp 和 iframe 跨域访问原理是什么?...缺点:防止xss注入 Iframe跨域 如果两个窗口一级域名相同,只是二级域名不同,document.domain设置为同一个主域

2.1K20

Web高性能动画及渲染原理(1)CSS动画和JS动画

如果没有定义from起始关键帧样式,animation动画也不会出错,它会默认以指定元素动画开始时样式作为起始关键帧,并结合to定义结束关键帧和指定元素animation定制参数来完成补间动画计算...使用Velocity.js实现动画 velocity.js是一个非常易用轻量级动画库,它包含了jQuery中$.animate( )方法全部功能,但是比jQuery更流畅。...jQuery: {fn: any} = (window as any).jQuery, Zepto: {fn: any} = (window as any).Zepto; patchFn...还是项目中已经引用jQuery或Zepto,都可以返回结果集上以对象方法形式来调用velocity函数(当然也可以用静态方法形式来调用),velocity方法具有多个方法重载,一般形式为接收两个参数...,第一个参数是下一个关键帧样式,它和CSS中定义关键帧没什么本质区别,第二个参数是动画细节定制,当多次调用velocity对象方法时就可以实现多步骤动画效果,所以适合场景中下面的调用都是合法

7.6K30

jQuery:详解jQuery事件(一)

,通过使用此方法,可以DOM载入就绪时就其进行操纵兵调用执行它所绑定函数。   ...).ready()方法注册事件处理程序,DOM完全就绪时就可以被调用,也即此时网页所有元素jQuery都是可以访问,但是并不是这些元素关联文件都已经下载完毕。   ...根据上述描述,显然使用jQuery$(docum).ready()方法时会出现一个问题。由于该方法内注册事件,只要DOM就绪就会被执行,因此可能此时元素关联文件未下载晚。...如果处理函数绑定给window对象,则会在所有的内容(包括窗口、框架、对象和图像等)加载完毕后触发,出国处理函数绑定在元素上,则会在元素内容加载完毕后触发。   ...(){ //code... }   多次调用: window.onload方法是不能被多次调用,因为JavaScriptonload事件一次只能保存一个函数引用它会自动用后面的函数覆盖前面的函数

1.6K20

jsjquery获取父窗口元素

是uploadFrame页面里一个函数 做WEB前端开发过程中,经常会有这样需求,用户点击【编辑】按钮,弹出一个对话框,在里边修改相应值,然后把修改后值显示原页面,最后点击保存。...$("#parent", window.parent.document).val($val);//jQuery写法给父页面传值 ---- 2.那么你取 父窗口窗口 元素就可以用: $(selector..., window.parent.parent.document); 3.那么你取 最顶级 窗口元素就可以用: $(selector, window.top.document); // 获取第一个...; location.replace(refurl); } 6. js操作窗口解说: frame框架里页面要改其他同框架下页面或父框架页面就用parent window.opener引用是...window.frames对象可以引用iframe里页面,也可以引用frameset里页面.

65910

从GitHub.com放弃使用jQuery说起

让我干唠是唠不出来什么,因为咱没怎么用过js,只是最近在学习vue.js,看到了一篇GitHub官方2018年发布解释为什么放弃前端框架jQuery文章,心血来潮,想读一遍,顺便翻译出来,以帮助理解...为什么 jQuery 早期有意义 GitHub.com 网站在 2007 年底将 jQuery 1.2.1 作为依赖引入。回顾当时时间节点,谷歌一年后才发布了其 Chrome 浏览器第一个版本。...我们创建了一个拉取请求机器人,当有人试图添加新 eslint-disable 规则时,它会在拉取请求上留下评论并通知我们团队。这样我们就可以尽早参与代码审查并提出替代方案。...某些情况下,我们能够完全删除某些遗留代码,而不必 vanilla JS 中重写它们。 这几年来,通过以上所述和诸如此类努力,我们逐渐减少了 jQuery 依赖,直到不再有一行代码引用它。...至于译文中难免存在错误或者纰漏,欢迎批评指正! 本来都打算发布了,结果在查一个概念时候发现之前有人已经翻译过了,就取长补短了一下。 参考文章 GitHub:我们为什么会弃用jQuery

87720

Bootstrap 模态框(Modal)插件基本应用

模态框(Modal)通俗说就是父窗体上弹出一个子窗体。 通常用来显示一个单独源内容或者是一些模块进行进一步详细介绍,可以不离开父窗体情况下进行一些互动和内容交互。...如果只是单独引用该插件功能,只需要引用 modal.js ,也可以引用 bootstrap.js 或压缩版 bootstrap.min.js。...当模态框被切换时,它会引起内容淡入淡出。 aria-labelledby="myModalLabel",该属性引用模态框标题。...class="close",close 是一个 CSS class,用于为模态窗口关闭按钮设置样式。 data-dismiss="modal",是一个自定义 HTML5 data 属性。...在这里它被用于关闭模态窗口。 class="modal-body",是 Bootstrap CSS 一个 CSS class,用于为模态窗口主体设置样式。

4.4K00

bootstrap3-dialog打开嵌套iframe窗口

,其中页面的嵌套就是通过dialog中内容加载嵌套一个iframe实现,但是这样整体样式会有些问题,所以我们通过modalbody,modaldialog一些样式进行了调整,特别注意,需要先调用...realize方法样式调整才会有作用。    ...,收到指定消息,则关闭dialog,能这样做原因是dialog模态窗口实质上就是原页面基础上加上了一个div和遮罩层,其实还是属于同一个页面的,所以相互发送message可以收到,所以关闭dialog...window.parent.postMessage('close', '*'); }     关于dialog使用还有一个问题,如果在一个iframe中打开窗口,遮罩层和dialog都会以iframe...为基准,但有时候这样会显窗口太小使用不方便,所以我们这里要再加一种方法,打开全局dialog,就是如果在iframe中打开,dialog要显示iframe顶级父级窗口中,这就需要我们源码小小改造下

36620

跨域通信

更详细说明可以看下表: 特别注意两点: 第一,如果是协议和端口造成跨域问题“前台”是无能为力, 第二:跨域问题上,域仅仅是通过“URL首部”来识别而不会去尝试判断相同ip地址对应着两个域或两个域是否一个...”(本段来自网络,个人觉得这段js跨域描述得清晰不过了)。...跨域请求无处不在,下面来看看我们都是如何处理跨域请求: 方法1 动态创建script 虽然浏览器默认禁止了跨域访问,但并不禁止页面中引用其他域JS文件,script标签src属性引用指向接收方一个处理地址...其中jquerygetScript 方法 就是类似那样方法(通过 GET 方式请求载入并执行一个 JavaScript 文件, 相当于通过src形式导入一个外部js)。...,其他窗口一个引用,比如iframecontentWindow属性、执行window.open返回窗口对象、或者是命名过或数值索引window.frames。

1.3K40

JavaScript - Window.open 弹窗 详解

弹窗 window.open( ) , 它会打开一个指定URL 窗口。 浏览器会打开一个选项卡URL,而不是独立窗口。...resizable(yes/no)—— 允许禁用新窗口大小调整。不建议使用。 scrollbars(yes/no)—— 允许禁用新窗口滚动条。不建议使用。 为什么要使用弹窗?...'/', 'test', params); 弹窗访问窗口 window 对象拥有一个 opener 属性,引用打开它原始对象。...opener 只弹出窗口最外层 window 对象(top)中定义,而且指向调用 window.open() 方法窗口或框架。...window.opener.document.write ("给原有窗口添加内容"); //窗口中输出提示信息 窗口之间连接是双向:主窗口和弹窗之间相互引用

91520

【深入浅出jQuery】源码浅析--整体架构

所以一开始阅读过程中会有很多看不懂其作用变量,正则,方法。 所以,我觉得阅读源码很重要一点是,摒弃面向过程思维方式,不要刻意去追求从上至下每一句都要在一开始弄明白。...另外不得不提出是,jQuery 在这里有一个针对压缩优化细节,使用第一种方式,代码压缩时候,window 和 undefined 都可以压缩为 1 个字母并且确保它们就是 window 和 undefined...,是否是重载,为什么要这样写,一定会有不一样收获。...实现和 jQuery.fn.extend 实现共用了同一个方法,但是为什么能够实现不同功能了,这就要归功于 Javascript 强大(怪异?)...// 给返回jQuery 对象添加属性 prevObject // 所以也就是为什么通过 prevObject 能取到上一个合集引用了 ret.prevObject = this;

63141

Flink 彻底理解 window窗口

窗口开始时间和结束时间是基于自然时间创建,比如指定一个5s窗口,那么1分钟内就会创建12个窗口。 什么时候窗口会被创建?当第一个元素进入到窗口开始时时候,这个窗口就被创建了。...当第一个元素包含了一个12:00事件时间进来时,Flink会创建一个12:00 到 12:05 窗口水位到 12:06 时候,会销毁这个窗口。 每个窗口都会绑定一个触发器和一个执行函数。...三、Keyed 和 Non-keyed Window 定义窗口之前,首先要指定你流是否应该被分区,使用 keyBy(...)...四、窗口分类和选择 指定了数据流是否分区之后,下一步是要去指定窗口类型。窗口分配器(window assigner)定义了元素如何划分到不同窗口中。...,里面仍然会有诸多问题。

8.6K10

HTML局部打印,区域打印两种实现方法总结

开发中,有时需要实现页面的局部打印功能,不打印页面上不需要区域, 例如页面: aaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbb</...2、body来回替换过程中,如果原页面中有较为复杂js渲染效果,可能会受影响 方法二:jquery.PrintArea.js局部打印 步骤: 1、引入js 因为PrintArea依赖于jquery...2.打印 $("#toPrint").printArea(); 总结: 缺点:依赖于第三方插件 优点:原页面不会有任何影响,并且逻辑简单。...ps: PrintArea还提供一些打印时附加优化功能,例如: 1.mode:模式,当点击打印按钮时触发模式,默认为iframe,当设置为popup则会新开一个窗口页面打印。...2.popTitle:设置新开窗口标题,默认为空。 3.popClose:完成打印后是否关闭窗口,默认为false。 具体可参考官方API

5.2K30

教你开发jQuery插件(转) 教你开发jQuery插件(转)

下面进一步,插件代码里处理每个具体元素,而不是一个集合进行处理,这样我们就可以针对每个元素进行相应操作。...当给extend方法传递一个以上参数时,它会将所有参数对象合并到第一个里。同时,如果对象中有同名属性时,合并时候后面的会覆盖前面的。...比如你代码中向全局window对象添加了一个变量status用于存放状态,同时页面中引用了另一个别人写库,也向全局添加了这样一个同名变量,最后结果肯定不是你想要。...如上面我们定义了一个Beautifier全局变量,它会被附到全局window对象上,为了防止这种事情发生,你或许会说,把所有代码放到jQuery插件定义代码里面去啊,也就是放到$.fn.myPlugin...当我们这样做之后,window等系统变量插件内部就有了一个局部引用,可以提高访问速度,会有些许性能提升 最后我们得到一个非常安全结构良好代码: ;(function($,window,document

3.3K10

jQuery常用功能

/jquery.gritter.js')($);解释如下: require是必须校验 ./jquery.gritter.js是参数,表示一个js。...6.window窗口对象中属性self,top. 1)self:当前窗口对象(如果是iframe里,则为该框架窗口对象) 2)、top:父窗口对象 3)、window:典型情况下,浏览器会为每一个打开...html创建对应window对象,如果这 个文档包含了多个框架,则浏览器会为原始文档建立一个window对象,再为每个框架创建额外window对象。...可以再当前窗口中直接使用window 全部属性、方法和集合,即不需要在前面附加计算结果为当前window对象表达式。...top.location.href:为引用test.html页面url窗口对象url self.location.href:为引用test.html页面url窗口对象url self.location

1.2K30

零基础学Flink:Window & Watermark

其生命周期进行了定义: In a nutshell, a window is created as soon as the first element that should belong to this...Watermark 通过上面一章内容,我们可以看出每个窗口会有开始时间和结束时间(一般window时间窗口为左闭右开区间范围),在这段时间内,我们是否能拿到所有需要处理数据,我们就需要watermark...这里引用一段描述 Watermark是Apache Flink为了处理EventTime 窗口计算提出一种机制,本质上也是一种时间戳,由Apache Flink Source或者自定义Watermark...实际生产中Punctuated方式TPS很高场景下会产生大量Watermark在一定程度上下游算子造成压力,所以只有实时性要求非常高场景才会选择Punctuated方式进行Watermark...实际生产中Periodic方式必须结合时间和积累条数两个维度继续周期性产生Watermark,否则在极端情况下会有很大延时。

85730

前端面试官问闭包,怎样回答脱颖而出

闭包就是能够读取其他函数内部变量函数 创建闭包最常见方式就是一个函数内创建另一个函数,创建函数可以访问到当前函数局部变量。...——《JavaScript高级程序设计》 2.为什么要使用闭包? 原因:Javascript语言特殊之处,就在于函数内部可以直接读取全局变量。 但是函数外部自然无法读取函数内局部变量。...出于种种原因,我们有时候需要得到函数内局部变量。那就是函数内部,再定义一个函数。 3.你能写一个闭包出来吗?...1,退出函数之前,将不使用局部变量赋值为null; 2,避免变量循环赋值和引用。 3,利用Jquery释放自身指定所有事件处理程序。...由于jQuery考虑到了内存泄漏潜在危害,所以它会手动释放自己指定所有事件处理程序。 只要坚持使用jQuery事件绑定方法,就可以一定程度上避免这种特定常见原因导致内存泄漏。

20010
领券