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

this学习笔记

输出结果//document//document//document 7、Function.prototype.bind bind,返回一个新函数,并且使函数内部的this为传入的第一个参数 bind的用法是给...函数名.bind(参数)返回的是一个函数,加()才立即执行 var obj1 = { name: 'Byron', fn : function(){ console.log...如果没有,继续初始化该函数内定义的局部变量,需要注意的是此时这些变量初始化为 undefined,其赋值操作在执行环境(ExecutionContext)创建成功后,函数执行时才会执行,这点对于我们理解...私有变量:(局部变量)当前作用域内有效的变量 看个例子 function ClassA(){ var a = 1; //私有变量,只有函数内部可以访问.外部无法访问,外部要访问的话需要返回 this.b...= 2; //实例变量,只有实例可以访问 } ClassA.c = 3; // 静态变量,也就是给函数对象增加了属性 console.log(a); // error无法访问局部变量 console.log

57730

【JS】327- javascript 的 api 设计原则

可延伸 所谓延伸就是指函数的使用像流水一样按照书写的顺序执行形成执行链条: document.getElementById('id').style.color = 'red'; document.getElementById...后面我们会在参数里面讲到如何继续优化。 所以,大家都比较喜欢用 jquery 的 api,虽然一个 $ 符号并不代表任何现实意义,简单的符号有利于我们的使用。..................paramN) 你必须对应地把每一个参数按照顺序传入,否则你的方法就会偏离你预期去执行,正确的方法是下面的做法。...).style.color = color; document.querySelectroAll(selector).style.backgroundColor = color; } //无法扩展改函数...zepto 在这里使用了很多的是非判断,这样做的好处当然是代码比之前更健壮,同时导致了代码的冗长,不适合阅读。总之,可预见性真正需要你做的事多写一些对位置实物的参数。把外部的检测改为内部检测。

64020
您找到你想要的搜索结果了吗?
是的
没有找到

防抖函数与节流函数

函数防抖 定义:多次触发事件后,事件处理函数只执行一次,并且是在触发操作结束时执行。 原理:处理函数进行延时操作,若设定的延时到来之前,再次触发事件,则清除上一次的延时操作定时器,重新定时。...timer = setTimeout(function () { //滚动条位置 let scrollTop = document.body.scrollTop || document.documentElement.scrollTop...依然有些功能并不适用: 当我们做图片懒加载(lazyload)时,需要通过滚动位置,实时显示图片时,如果使用防抖函数,懒加载(lazyload)函数将会不断被延时, 只有停下来的时候才会被执行,对于这种需要实时触发事件的情况...函数节流 定义:触发函数事件后,短时间间隔内无法连续调用,只有上一次函数执行后,过了规定的时间间隔,才能进行下一次的函数调用。...原理:处理函数进行延时操作,若设定的延时到来之前,再次触发事件,则清除上一次的延时操作定时器,重新定时。

86230

Mongoose学习参考文档

,数据库就有该数据了 9.如果要执行查询,需要依赖Model,当然Entity也是可以做到的 PersonModel.find(function(err,persons){ //查询到的所有...Documents Document是与MongoDB文档一一应的模型,Document可等同于Entity,具有属性和操作性 注意: Document的`CRUD都必须经过严格验证的,参看2.5.2...(err){});   需要注意,Document的CRUD操作都是异步执行,callback第一个参数必须是err,而第二个参数各个方法不一样,update的callback第二个参数是更新的数量,如果要返回更新后的对象...,该query对象执行的方法都将返回自己,只有执行exec方法时才执行查询,而且必须有回调。   ...验证是异步递归的,如果你的SubDoc验证失败,Document也将无法保存 验证并不关心错误类型,而通过ValidationError这个对象可以访问 7.1 验证器 required 非空验证 min

24.2K90

【翻译】JavaScript内存泄露

最典型的的便是在调用栈(call stack)中被引用的全部对象(即当前function域内的所有局部变量和参数),以及部分全局变量。...$.data函数的本质是将JavaScript实体与DOM节点绑定,然后通过DOM节点来进行JavaScript实体的读/存操作: $(document.body).data('prop', 'val...这样做可能有点过头,起码保证了清空了被占用的内存。 如果性能要求比较严格,解决方法还是很纠结的。...我们甚至会发现HTML5中存在功能性的泄露,为了修复它们,首先我们需要重现它们并找出解决方案。 浏览器并不会立即执行内存清除工作,许多垃圾回收器算法都是不定时地清理内存。...浏览器也可能等待达到一定的限定值时再执行清理工作。 所以,如果你发现了内存泄露问题,或许你需要等待一段时间才能执行回收操作。 浏览器占用的内存可能会越来越多,最终在一段时间之后它会进行清理工作。

2.1K60

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

声明变量并未其赋值进行初始化时,这个变量的值就是undefined。...答案: caller是返回一个函数的引用,该函数调用了当前函数; callee是返回正在被执行function函数,也就是所指定的function对象的正文。 那么问题来了?...答案:在Javscript中,解析器在向执行环境中加载数据时,函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行...两者在参数上有区别的。对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 ...答案: 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,仍可以对真正数组遍历方法来遍历它们。

1.4K50

基于Vue.js的大型报告页项目实现过程及问题总结(二)

距离上一篇文章过去了二十多天了,期间一直想把第二部分写完,结果在测试过程中遇到了各种坑爹的问题,到今天才算基本完成,也许还有后续,趁着今天有时间就写出来吧,也算这个项目的一个总结了 遇到最大问题:...,显然这是不明智的,后台数据暂时无法做进一步处理 2.echarts绘制图表的同时动画和频繁操作dom添加canvas也是也是消耗性能的元凶之一 3.大量的图表绘制同步进行会导致阻塞  原因已经找到接下来就是解决问题...,定时器其实也算是异步执行了,当所有的主线程走完再去执行定时器的方法,这样的话相当于有10000个定时器在等待执行啊,虽然相隔一秒,不会造成卡顿,显然不是最优方案, 所以最终使用的是 promise...的方法,这样就变成了只有一个定时器,代码如下 // 异步执行图表 export const parmise = obj =>{ console.log('数据加载完毕,准备生成图表');...jsPDF实例中,也有添加html的功能,某些元素无法生成在pdf中,因此可以使用html2canvas + jsPDF的方式将页面转成pdf。

2.7K100

DOM事件基本概念大总结(前端必备)

参数 3 为一个布尔值,false 代表在冒泡阶段执行,true 表示在捕获阶段执行 var doc = document.querySelector('div'); doc.onclick = function...利用 removeEventListener() 来移出,前提是必须给定函数名 removeEventListener() 有三个参数参数 1 为事件、参数 2 为执行函数。...参数 3 为一个布尔值,false 代表在冒泡阶段执行,true 表示在捕获阶段执行 如下使用匿名函数定义的执行函数无法删除 var doc = document.querySelector(...无法删除通过匿名定义添加的执行函数。 封装跨浏览器的事件处理函数 因为 IE 独树一帜,又因为 IE 属于 windows 用户标配;所以兼容需要考虑。...但有两种情况需要注意 通过直接在 html 元素上添加的事件,必须写明参数为 event,响应执行函数也要写明该参数 通过 addEventListener() 添加的事件,只需要执行函数上写明参数就行

1.8K20

什么是跨域及怎么解决跨域问题?

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。 跨域会阻止什么操作?...,参数就是上述的callback参数,不需要管他是啥值,因为jq自动给你起了个名字传到后台,并自动帮你生成回调函数并把数据取出来供success属性方法来调用 jq jsonp标准写法: $.ajax(...但是下面的赋值就会出来”参数无效”的错误: 代码如下: javascript:alert(document.domain = "cctv.net"); //参数无效 javascript:alert(document.domain...而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域. Javascript出于安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作。...或者子iframe做了事件,父在跨域的情况下无法获取子的事件,通过消息传递就可以间接获取到事件。

9.5K13

Javascript提升阶段学习

,来实现html语言无法实现的效果   (html是网页的基础,css是样式,js是特效) 2:javascript语言特点   2.1:JavaScript是基于对象和事件驱动的(动态的),它可以直接用户或客户输入做出响应...,无须经过web服务程序,他用户的响应,是采用以事件驱动的方式进行的 ,所谓事件驱动,就是指在主页中执行了某种操作产生的动作,就成为事件。...undefined类型只有一个值undefined,当声明的变量未初始化的时候,该变量的默认值就是undefined       document.write(null==undefined);结果为...关键字;        function 函数名称([参数...])...如果参数是一个表达式,eval()函数将执行表达式,如果参数是javascript语句,eval()将执行javascript语句             eval()函数是一种由函数执行的动态代码,比直接执行脚本慢很多

1.2K80

详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

) 要发送给服务器的数据,以 Key/value 的键值形式表示,会做为QueryString附加到请求URL中 callback (Callback) (可选参数) 载入成功时回调函数(只有当Response...(Callback) (可选参数) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法) type (String) (可选参数) 请求数据的类型,xml,text,json...如果需要发送同步请求,请将此选项设置为 false。 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。...为正确的函数名,以执行回调函数。 error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。...你无法同时执行success和error两个回调函数 ajaxError 全局事件全局的发生错误时触发 complete (局部事件) 不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件

3.4K100

跨域通信

同源策略限制范围 Cookie、LocalStorage 和 IndexDB 无法读取。 DOM 无法获得。 AJAX 请求不能发送。...(后台),该地址返回的javascript方法会被执行,另外URL中可以传入一些参数,该方法只支持GET方式提交参数。...function addScriptTag(src) { var script = document.createElement('script'); script.setAttribute("...在发送消息的时候,如果目标窗口的协议、主机地址或端口这三者的任意一项不匹配targetOrigin提供的值,那么消息就不会被发送;只有三者完全匹配,消息才会被发送。...CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。

1.3K40

JavaScript强化教程——jQuery 核心

("bar"); }); [/code] 由于我们已经将 span 选择器限定到 this 这个环境中,只有被点击元素中的 span 会得到附加的 class。...默认情况下, 如果没有指定 context 参数,$() 将在当前的 HTML document中查找 DOM 元素;如果指定了 context 参数,如一个 DOM 元素集或 jQuery 对象,那就会在这个...该功能通常的用法是,已经通过 this 关键字传递到 callback 函数的元素调用 jQuery 的方法:实例 $([code]"div.foo" ).click(function() { $(this...该函数的作用如同 $(document).ready() 一样,只不过用这个函数时,需要把页面中所有需要在 DOM 加载完成时执行的其他 $() 操作符都包装到其中来。...尽管从技术上来说,这个函数是可链接的,真正以这种方式链接的情况并不多。例子 当DOM加载完成后,执行其中的函数: $(function(){ // 文档就绪 });

1.1K20

JavaScript 事件对象

document表示一个绑定的对象,用于触发某个元素区域。function()匿名函数是被执行的函数,用于触发后执行。 除了用匿名函数的方法作为被执行的函数,也可以设置成独立的函数。...事件对象,我们一般称作为event对象,这个对象是浏览器通过函数把这个对象作为参数传递过来的。那么首先,我们就必须验证一下,在执行函数中没有传递参数,是否可以得到隐藏的参数。...function box() {//普通空参函数 alert(arguments.length);//0,没有得到任何传递的参数 } input.onclick = function () {//事件绑定的执行函数...alert(arguments.length);//1,得到一个隐藏参数 }; 通过上面两组函数中,我们发现,通过事件绑定的执行函数是可以得到一个隐藏参数的。...所以,我们只需要做上这三种兼容即可。

1.9K100

XMLHttpRequest使用指南大全

以下2种情况下值都为空字符串”“:请求未完成、请求失败 xhr.responseXML 默认值为 null 只有当 responseType 为"text"、""、"document"时,xhr对象上才有此属性...以下3种情况下值都为null:请求未完成、请求失败、请求成功返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...另外,还有2个需要注意的坑儿: - 可以在 send()之后再设置此`xhr.timeout`,计时起始点仍为调用`xhr.send()`方法的时刻。...一旦程序抛出错误,如果不 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...这样的判断是有坑儿的,比如当返回的http状态码不是200,而是201时,请求虽然也是成功的,并没有执行成功回调逻辑。所以更靠谱的判断方法应该是:当http状态码为2xx或304时才认为成功。

1.3K30

事件

也就是我们需要提前定义好某些事件发生了该怎么处理,这个过程叫做绑定事件处理程序。...image.png 跨浏览器的事件对象 虽然DOM和IE的event对象不同,基于它们的相似性,我们还是可以写出跨浏览器的事件对象方案 function getEvent(e) { return...在W3CDOM事件进行规范化之前的事件处理,一般称为DOM0级事件处理程序。...,移除时的参数必须与添加处理程序时使用的参数相同,这也意味着通过addEventListener()添加的匿名函数将无法移除。...参数个数不相同,这个最直观,addEventListener有三个参数,attachEvent只有两个,attachEvent添加的事件处理程序只能发生在冒泡阶段,addEventListener第三个参数可以决定添加的事件处理程序是在捕获阶段还是冒泡阶段处理

1.3K30

JavaScript设计模式之命令模式

命令模式是将一个请求封装成一个对象,从而使您可以用不同的请求客户进行参数化。请求以命令的形式包裹在对象中,并传给调用对象。...主要解决的问题:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。...命令模式不一定具备上面的所有结构,简单的命令模式可以只有命令的发布者和命令的接收者,这种简单命令模式中,接受者和执行者是同一个对象。比如:小明的妈妈告诉小明说:“今天中午妈妈会很忙,没时间出去买菜。...1], SubMenu.add); addEvent(btn[2], SubMenu.del); 这就是JavaScript语言中的命令模式,在JavaScript语言中函数是一等对象,它可以作为一个参数传递到函数内部去执行...但有些时候这会成为一种缺点,因为他无法执行撤销操作,所以在实现撤销操作时,我们最好还是使用命令对象的execute方法为好。

47310

深入理解Js中的this

scope,但是在Js中的this却是一个例外,this的指向问题就类似于动态作用域,其并不关心函数和作用域是如何声明以及在何处声明的,只关心它们从何处调用,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定...JavaScript在栈内存中提供一个供Js代码执行的环境,关于作用域以及函数的调用都是栈内存中执行的。...this永远指向调用者,箭头函数除外,接下来我们介绍一下五种this的使用情况。...,每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域,此外需要注意使用bind...); // B // 绑定document对象 rollCall.sayName.call(s); // C // 绑定自定义对象 // bind // 最后一个()是为让其执行 rollCall.sayName.bind

40510

深度解密setTimeout和setInterval——为setInterval正名!

创建一个参数,用于监控是否需要停止,如果为true,则停止定时器。...但是在异步的情况下,比如ajax轮循(websocket不在讨论范围内),我们只有一种选择就是setTimeout,原因只有一个——天晓得这次ajax要浪多久才肯回来,这种情况下只有setTimeout...然后queue(队列)就是下一轮需要执行的task们,所有未执行而将执行的task都将推入这个队列之中。...导致memory leak的最终原因只有一个,就是没有即使释放不需要的内存——也就是没有释放定义的参数,导致垃圾回收无法回收内存,导致内存泄露。 那么内存是怎么分配的呢?...这样有个问题就是程序中两个不需要参数互相引用,这样两个都会被标记,然后都无法被删除,也就是锁死了。为了解决这个问题,所以出现了标记清除法(mark sweap)。

2.9K30
领券