随笔分类 -  JavaScript

摘要:平时写写 react,却不了解内部是怎么把 jsx 转化为 vdom,然后渲染在界面上,以及当数据流更新时,视图又是怎么更新的呢。 于是我查阅了大量资料后,自己手写了一个简单版的 react,从中大概能了解到 react 基本的运行机制。 react 一个很方便之处是我们可以像写原生 html 那样 阅读全文
posted @ 2019-06-15 11:35 vxee 阅读(819) 评论(0) 推荐(0)
摘要:今天开始阅读《JavaScript设计模式与开发实践》,对于设计模式的学习一直渴望已久。 设计模式的定义是:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。 其实平时在工作中不知不觉在使用某些设计模式,只是我们不知道而已。 动态类型语言和静态类型语言 静态类型语言在编译时便已确定变量的类 阅读全文
posted @ 2018-07-21 18:23 vxee 阅读(429) 评论(0) 推荐(0)
摘要:bind方法可以用来给一个方法绑定上下文环境对象,以及重新给方法传参数。bind的另一个简单使用是使一个函数拥有预设的初始参数。我们称为偏函数 由于bind方法在并不是在所有的浏览器上都支持,因此我们考虑自己实现bind方法。首先我们可以给目标函数指定作用域来简单实现bind 这样实现的bind方法 阅读全文
posted @ 2018-07-21 14:24 vxee 阅读(150) 评论(0) 推荐(0)
摘要:1.目前都流行模块化代码,这样可以避免变量全局污染,也可以控制外部是否能访问内部的变量。 2.主流的js模块规范有commonJS和AMD。commonJS中有个方法是require(),用于加载模块,多用在服务器端,如node.js就是按照这个规范写的。因为服务器端的文件都存储在本地,通过requ 阅读全文
posted @ 2018-05-15 17:20 vxee 阅读(130) 评论(0) 推荐(0)
摘要:1.检测数组 2.对是否改变原数组的常用方法归纳 改变原数组的: 不改变原数组的: splice方法: 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) 2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(其实位置),第二个参数(0),第三个参 阅读全文
posted @ 2018-03-23 17:23 vxee 阅读(137) 评论(0) 推荐(0)
摘要:1.什么是csrf攻击 csrf(cross-site request forgery)即跨站点请求伪造。攻击者盗用你的身份来做一些违法的事情,主要是利用cookie。 2.对csrf漏洞的检测 通过去掉htpp请求中的referer字段后重新提交,还能成功提交。因为referer指向的是http请 阅读全文
posted @ 2018-03-13 11:29 vxee 阅读(180) 评论(0) 推荐(0)
摘要:1.冒泡排序 平均时间复杂度O(N2) 最好情况O(N)最坏情况O(N2) 空间复杂度O(1) 升级版冒泡排序 2.选择排序 平均时间复杂度O(N2) 最好情况O(N2)最坏情况O(N2) 空间复杂度O(1) 适合小数据(1000以内)排序 3. 插入排序 平均时间复杂度O(N2) 最好情况O(N) 阅读全文
posted @ 2018-03-12 15:06 vxee 阅读(145) 评论(0) 推荐(0)
摘要:wrap块为窗口可看到的部分,我们可以通过js获取窗口可视区的大小,并为其设置overflow: hidden属性,使得窗口不出现滚动条,只显示窗口大小的一页内容; 设置main定位为relative,通过改变main块的top属性实现不同页面的切换。 js代码的主要部分就是对滚动事件的函数绑定,大 阅读全文
posted @ 2018-02-28 23:28 vxee 阅读(984) 评论(0) 推荐(0)
摘要:任何元素的默认position的属性值都为static(静态),但我们在布局的时候也会经常用到relative(相对)以及absolute(绝对)这两种属性。 如果用position来进行布局,父级元素的position属性必须为relative,而定位于父级内部某个位置的元素,最好用absolut 阅读全文
posted @ 2018-02-26 22:20 vxee 阅读(174) 评论(0) 推荐(0)
摘要:在看到递归的时候看到这段代码。这段代码其实是遍历某个DOM节点(node)下的所有子节点,并且在遍历到的时候,都是执行参数中传入的自定义的方法。 这其实是个一个树的先序遍历的算法,先找子节点,再找兄弟节点。 对于元素节点,nodeType=1 对于文本节点,nodeType=3 对于属性节点,nod 阅读全文
posted @ 2017-08-19 14:07 vxee 阅读(198) 评论(0) 推荐(0)
摘要:解释一下: 1.Function是一个构造函数,用于创建一个函数对象 2.function是一个关键字,用于声明一个函数对象 3.每一个函数对象都继承 Function 构造函数的原型对象 4.A是构造函数,a是A的实例 ( 即 a = new A ) 那么有:a.constructor = A 实 阅读全文
posted @ 2017-08-17 22:36 vxee 阅读(122) 评论(0) 推荐(0)
摘要:数组元素的添加和删除 a.push()方法在数组末尾增加一个或多个元素 可以使用delete运算符来删除数组元素 delete操作不影响数组长度 Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。 var a = [1,2,3]; a.join(); // 阅读全文
posted @ 2017-05-07 18:54 vxee 阅读(136) 评论(0) 推荐(0)
摘要:1.三类JavaScript对象和两类属性 (1)内置对象(native object):由ECMAScript规范定义的对象或类。例如,数组,函数,日期,正则表达式。 (2)宿主对象(host object):由JavaScript解释器所嵌入的宿主环境定义的(如Web浏览器)。 (3)自定义对象 阅读全文
posted @ 2017-05-06 22:22 vxee 阅读(229) 评论(0) 推荐(0)
摘要:1.for/in 语法如下: for(variable in object) statement variable通常是一个变量名,也可以是一个可以产生左值的表达式或者一个通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。object是一个表达式,这个表达式的计算结果是一个对象。 执 阅读全文
posted @ 2017-05-06 19:59 vxee 阅读(215) 评论(0) 推荐(0)
摘要:var box;alert(typeof box);//box是Undefined类型,值是undefined,类型返回的字符串是undefined var box = true;alert(typeof box);//box是Boolean类型,值是true,类型返回的字符串是boolean va 阅读全文
posted @ 2017-04-26 15:17 vxee 阅读(117) 评论(0) 推荐(0)