- 博客(8)
- 收藏
- 关注
原创 【JavaScript】JS的NodeList对象
NodeList与HTML CollectiongetElementsByClassName()和getElementsByTagName()都返回NodeList对象,而类似document.images和document.forms的属性为HTML Collection对象。NodeList和HTML Collection对象不是历史文档状态的一个静态快照,而通常是实时的。也许你会问,...
2019-08-05 16:09:48 4493
原创 理清Hogan与Mustache模板引擎
Hogan与MustacheHogan与Mustache的关系就像V8与Node的关系一样。安装Hogannpm install hogan.js --save-devHogan用法// 引入hoganconst hogan = require('hogan.js'); // 渲染所需模板const tmpl = 引入模板文件 // 渲染所需数据let renderDat...
2019-08-05 14:33:48 245
原创 【JavaScript】JS的调用栈和堆
在JS代码的执行过程中会分配两个内存区域——调用栈和堆。第一个性能非常高,因此用于连续执行所提供的函数。每个函数调用在调用栈中创建一个所谓的“框架”,其中包含其局部变量的副本和this。你可以通过Chrome调试器查看它,就像在其他与堆栈类似的数据结构中一样,调用栈的栈被推送或弹出堆栈,具体取决于正在执行或终止的新函数。你可能见过调用栈上限溢出错误,通常是由于某种形式的无限循环导致的。谈到...
2019-08-05 11:55:11 343
原创 【JavaScript】this和event.target的异同
event.target每次触发DOM事件时会产生一个事件对象(也称event对象),而事件对象也有很多属性和方法,其中target属性是获取触发事件对象的目标,也就是绑定事件的元素,event.target表示该DOM元素,然后在获取其相应的属性值。this和event.target的区别:js中事件是会冒泡的 ,所以this是可以变化的,但是event.target不会变化,它永...
2019-08-05 11:45:51 295
原创 【JavaScript】JS变量生命周期:为什么let没有被提升
理解背后原理:变量生命周期声明阶段 是在作用域中注册一个变量初始化阶段 是分配内存并为作用域中的变量创建绑定,在此步骤中,变量将使用undefined自动初始化赋值阶段 是为初始化的变量赋值变量在通过声明阶段时是 尚未初始化 状态,但未达到初始化状态。let变量的处理方式与var不同,主要区别在于声明和初始化阶段是分开的。变量未初始化时,变量位于暂时死区。当解释器执行到语句let...
2019-08-05 09:59:41 360
原创 【浏览器/虚拟机/服务器】浏览器对象键值对输出顺序
背景后台直接给前端一个对象让循环遍历出来,但遍历顺序与预期不一致。解决让后台直接返回一个数组进行遍历才能保证顺序与预期一致。原理浏览器控制台会重新按ASCII排序键值对,但这并不是对象的键值对没有顺序,对象依旧保持原本的顺序,只是浏览器控制台在显示时做了修改。JS对象是个哈希表,哈希表存储数据是有顺序的,所以不要觉得浏览器控制台优化输出就觉得顺序不重要,键名出现的顺序就是对象的顺序,f...
2019-08-05 09:52:19 493
原创 【前端安全】cookie和token都存放在header中,为什么不会劫持token?
token不是为了防止XSS的,而是为了防止CSRF的;CSRF攻击的原因是浏览器会自动带上cookie,而不会带上token;以CSRF攻击为例:cookie:用户点击了链接,cookie未失效,导致发起请求后后端以为是用户正常操作,于是进行扣款操作;token:用户点击链接,由于浏览器不会自动带上token,所以即使发了请求,后端的token验证不会通过,所以不会进行扣款操作;...
2019-08-05 09:41:15 13349 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人