随笔分类 -  JavaScript

1
摘要:作为前端开发攻城师,难免对时间进行各种计算和格式转换,一个js的Date对象统统可以搞定。下例是将一个具体的时间转换成今天、明天、几天之内、本月等文字描述的日期的工具函数,也可以基于它扩展,多应用于网络资源(如影视动画)的上映场景中。 阅读全文
posted @ 2017-08-28 15:58 海绵小猪 阅读(505) 评论(0) 推荐(0)
摘要:js处理DOM交互非常普遍,但DOM结构单纯用js字符串拼接简直难以维护,不方便理解和扩展。 下面展现了js模板引擎的实现原理: html中的模板 因为script不会被浏览器解析和渲染,最大限度节省了浏览器资源,textarea标签同样可以达到效果。Template标签就是这样的目的,只是支持不够 阅读全文
posted @ 2016-11-24 16:45 海绵小猪 阅读(3319) 评论(0) 推荐(0)
摘要:子页面调用父页面 $('#Id', window.parent.document); //调用父页面元素 window.parent.func1(); //调用父页面方法 (子页面同理,需将js方法挂到window对象中) 父页面调用子页面 $('#id', document.frames('ifr 阅读全文
posted @ 2016-11-22 14:08 海绵小猪 阅读(158) 评论(0) 推荐(0)
摘要:众所周知使用Ajax可以局部刷新提高用户体验,然而url不跟随改变是其一大弊端。 如果修改浏览器地址栏的url,同时不刷新整个页面就完美了。 先来看看什么是pushState? 给history对象增加一个状态。 但是,调用history.pushState()或者history.replaceSt 阅读全文
posted @ 2016-11-12 11:04 海绵小猪 阅读(993) 评论(0) 推荐(0)
摘要:1.Error对象 表示一个错误,代码运行中发生错误时,会创建Error对象并抛出。 创建错误: new Error([message],[filename],[lineNumber]) Error类型: EvalError 与eval相关的错误 InternalError javascript引擎 阅读全文
posted @ 2016-05-10 21:33 海绵小猪 阅读(487) 评论(0) 推荐(0)
摘要:1.什么是闭包? W3C:闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。 要较好理解闭包,除了形式本身,还应先理解: JS没有块级作用域:见JavaScript作用域; JS的内存管理机制: 内存分配和回收的自动完成的,当定义变量,new对象,数组slice 阅读全文
posted @ 2016-05-05 11:01 海绵小猪 阅读(209) 评论(0) 推荐(0)
摘要:之前做过两道前端,阿里和网易各一道。下文内容和解题的核心并无关系,只是当时想了解jQuery那么处理原生js的原理是什么,所以小结一下。 题目一:判断两个矩形元素是否重叠。 开始无尽的跑偏。。。。 Html元素都是HTMLElement实例,下例将div换成script、html都成立。 HTMLE 阅读全文
posted @ 2016-05-03 18:15 海绵小猪 阅读(249) 评论(0) 推荐(0)
摘要:js通过立即执行函数可以进行模块化。 但是涉及复杂模块依赖关系上述方式就需要改造了。 require.js是遵循AMD规范的JavaScript模块化库,。下面展示了如何使用require.js进行js模块化。 1.定义一个模块mod1.js 2.定义需要依赖的模块mod2.js define方法用 阅读全文
posted @ 2016-04-19 18:39 海绵小猪 阅读(219) 评论(0) 推荐(0)
摘要:一、添加事件监听函数-JavaScript 1.元素标签里直接写js代码 2.标签里写函数名 以上两种方式本质是一样的,被称为内联模式,效率最低。 3.js脚本里给事件属性指定函数 这种方法称为传统模式,只能注册一个事件,再多会被覆盖。内联模式和传统模式都属于DOM Level 0事件模型,已经不被 阅读全文
posted @ 2016-03-19 13:16 海绵小猪 阅读(299) 评论(0) 推荐(0)
摘要:Ajax是动态JavaScript和XML技术的简称。主要作用是异步请求。 1.异步请求过程 (1)Ajax对象创建 下面不考虑那么老旧的兼容性了。 (2)发起请求 GET请求一般用于信息获取,url上传递参数,不够安全,信息限制在2000字节。 POST请求一般用于修改服务器资源,发送大小无限制, 阅读全文
posted @ 2016-03-19 11:08 海绵小猪 阅读(248) 评论(0) 推荐(0)
摘要:相信每个用JS的人都会经常遇到巧用逻辑运算符简化代码的情形: evnt=evnt || window.event; ... var obj = unKnownObj1&&unKnownObj2&&unKnownObj3; 这些逻辑运算符的原理是什么呢?我动手测试了一下,做一个总结。 首先,需要把JS 阅读全文
posted @ 2016-02-24 11:08 海绵小猪 阅读(936) 评论(0) 推荐(0)
摘要:1.JS的作用域分为全局作用域和函数作用域 全局作用域内定义的变量可以在全局和函数体内访问,函数作用域内定义的变量只能在自己的函数作用域内访问。如果变量前没有加var,无论在哪定义都会成为全局变量。 上面代码中的函数为立即执行函数,不经过调用就会自己执行,方便看测试结果,另一个重要作用稍后解释。 另 阅读全文
posted @ 2016-02-17 11:52 海绵小猪 阅读(2220) 评论(0) 推荐(0)
摘要:1.封装类 怎么封装一个类,也就是创建自定义对象? 构造函数式 和Java模式最像。缺点是每生成实例都会创建一次showColor。 原型方式 利用了前述prototype。缺点是不灵活,无法传参数。 通过给this添加属性的方式创建成员变量都是公有的,在函数体内var的变量都是私有的。类用一个Fu 阅读全文
posted @ 2016-01-29 10:54 海绵小猪 阅读(1624) 评论(2) 推荐(1)
摘要:所有HTML元素都拥有的属性:id,title,lang,dir,className。 DOM集合: document.images 文档中所有图片集合 document.images[0] 等价document.images.item(0) 第一个图片 document.images.length 阅读全文
posted @ 2016-01-21 11:19 海绵小猪 阅读(1159) 评论(1) 推荐(0)
摘要:JavaScript里函数是一种引用类型,Function类型。总结三种函数定义的方式:1.语句式function test1(){ ; }//调用test1();2.函数直接量(ECMA推荐的方式)var test2 = function(){ ; }//调用test2(... 阅读全文
posted @ 2016-01-12 15:11 海绵小猪 阅读(136) 评论(0) 推荐(0)
摘要:JavaScript对象可分为三类:本地对象和内置对象:Array Boolean Date String Math Number Regexp Global浏览器对象:Window Navigator Screen History LocationHTML DOM对象: 这个比较多,不一一例举了N... 阅读全文
posted @ 2016-01-11 13:38 海绵小猪 阅读(151) 评论(0) 推荐(0)
摘要:原始类型存在堆中,引用类型存在栈中,引用类型存的是指向对象内存的指针。 原始类型有5个:undefined、null、string、boolean、number。 JavaScript提供了typeof方法来判断值类型,原始类型对应的结果是undefined、object、string、boolea 阅读全文
posted @ 2016-01-10 15:49 海绵小猪 阅读(692) 评论(0) 推荐(0)
摘要:如何高效简洁地去重?从下面两个角度考虑: 1.借助js对象key唯一的特性去重 2.借助Array自身方法遍历、操作Array 第一种方法最简洁,局限是使用了Array自身方法就必须承受filter不改变原数组的特点。 所以有了第二种方法,我们自己来对数组筛选,满足一切去重的自定义要求。这里使用sp 阅读全文
posted @ 2016-01-10 15:34 海绵小猪 阅读(329) 评论(0) 推荐(0)
摘要:先上2个常用到不可能被忽略的方法~Math.abs() 取绝对值Math.random() 生成0-1(包含0但不含1)的随机数,不能设置范围,可以理解------------------------------------------------------Math.ceil()Math.floo... 阅读全文
posted @ 2015-12-29 11:12 海绵小猪 阅读(130) 评论(0) 推荐(0)
摘要:1.创建正则表达式的方式// two waysvar pattern = new RegExp(rule);var pattern = /rule/2.创建时额外参数/* i : 忽略大小写 * g : 全局匹配,否则只会针对第一个匹配项 * m : 多行匹配 */var pattern = new... 阅读全文
posted @ 2015-12-29 10:42 海绵小猪 阅读(391) 评论(0) 推荐(0)

1