随笔分类 -  JavaScript

摘要:文章首发:http://www.cnblogs.com/sprying/p/4349426.html本文罗列了一般Js类型检测的方法,是构建Js知识体系的一小块,这篇文章是我很早之前总结的。一、Js中有5种基本数据类型Undefined 、Null、Boolean、String、Number(包含N... 阅读全文
posted @ 2015-03-19 08:55 小方。 阅读(1495) 评论(1) 推荐(1) 编辑
摘要:前端工程化,升级版的合并压缩。一般是用nodeJs开发命令行工具。什么是前端工程化?来自阿里的前端专家石破既然聊到了工程化一词,那什么是工程化?我个人理解工程化是把经验技巧、个人知识流程化、规范化,建立一个可重复创造优秀产品的最优环境。前端工程化要解决一系列问题。这里将处理Js、css、imgs的过... 阅读全文
posted @ 2015-01-12 11:28 小方。 阅读(735) 评论(0) 推荐(0) 编辑
摘要:文章首发:http://www.cnblogs.com/sprying/p/3573456.html使用this的几种场合1. 执行函数时,判断函数是对象方法还是一个单独的函数?单独的函数this===window;对象方法,this == 对象。function UseThis(){console.log(this === window);this.instancePro = 1;}UseThis.objPro = 2;UseThis.objMethod = function(){console.log(this.objPro);}UseThis();//true 不管嵌套多深,执行函数时, 阅读全文
posted @ 2014-02-28 13:48 小方。 阅读(1276) 评论(2) 推荐(0) 编辑
摘要:什么是闭包文章首发:http://www.cnblogs.com/sprying/p/3329199.html最近更新: 2014年02月28日14:39:58 (最新地址)一、一个问题例一:假设要写动态生成HTML的函数,HTML有一部分是固定的。方案①function buildHtml(args) { var template = ['', '', '', '', '']; template[1] = args[0]; template[3] = args[1]; return template.join(& 阅读全文
posted @ 2013-09-18 20:28 小方。 阅读(2021) 评论(0) 推荐(0) 编辑
摘要:最近更新:2014年03月02日09:54:44 首发链接:http://www.cnblogs.com/sprying/p/3194899.html 一、事件处理程序 1、HTML事件处理程序 如果当前绑定事件的元素是表单的一个输入元素;则this隐性指代可描述如下 事件处理程序是在元素的作用域中 阅读全文
posted @ 2013-07-17 08:51 小方。 阅读(3116) 评论(3) 推荐(7) 编辑
摘要:JavaScript函数 1. 函数的定义 函数名称只能包含字母、数字、下划线或$,且不能以数字开头。定义时可用函数定义表达式或者函数声明语句。 var f = function fact(x){} 函数定义表达式包含名称,名称将作为函数的局部变量,在函数内部使用,代指函数。 函数声明语句不是真正的语句,不能出现在循环、条件、try/catch/finally以及with语句中;声明语句置于在不会执行到的位置,仍可被整个作用域可访问,可在被定义代码之前使用。定义表达式的变量声明被提前了,但是对变量赋值不会提前,函数在被定义之前无法使用,否则调用时会出现错误:"TypeError: . 阅读全文
posted @ 2013-07-16 08:26 小方。 阅读(3070) 评论(4) 推荐(1) 编辑
摘要:想解决内存泄露问题,必须知道什么是内存泄露,什么情况下出现内存泄露,才能在遇到问题时,逐个排除。这里只讨论那些不经意间的内存泄露。一、什么是内存泄露内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。在C++中,因为是手动管理内存,内存泄露是经常出现的事情。而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使用的情况下几乎不会发生内存泄露。浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有bug,会产生内存泄露。二、内存泄露的几种情况1、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件 阅读全文
posted @ 2013-05-31 00:26 小方。 阅读(14602) 评论(20) 推荐(3) 编辑
摘要:继前篇谈谈JavaScrip的异步实现,我们知道JavaScript引擎是单线程的,所有的js的代码都将在这个单线程中执行。像浏览器事件、计时器等异步只是个幌子,异步时js并没有多个线程在执行,而是都排列在一个待执行队伍中。setTimeout的使用方法setTimeout(function(){},time)--可以正确执行。setTimeout("js语句",time)--可以正确执行。 js语句可以是多条语句。setTimeout(fun,time)只引用函数名字,也可运行,但是要注意的是:如果fun是某个对象的方法,则fun函数内的this此时被当做window。e 阅读全文
posted @ 2013-05-29 01:22 小方。 阅读(3100) 评论(0) 推荐(0) 编辑
摘要:我们经常说JS是单线程的,比如node.js研讨会上大家都说JS的特色之一是单线程的,这样使JS更简单明了,可是大家真的理解所谓JS的单线程机制吗?单线程时,基于事件的异步机制又该当如何,这些知识在《JavaScript权威指南》并没有介绍,我也一直困惑了,直到看到一篇外文,才有了些眉目,这里与大家... 阅读全文
posted @ 2013-05-26 23:08 小方。 阅读(11994) 评论(8) 推荐(10) 编辑
摘要:由于window.onload事件需要在页面所有内容(包括图片等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本。其实在现在大部分主流浏览器上(Firefox 3+,Opera 9+,Safari 3+,Chrome 2+)都提供了这一事件方法:addDOMLoadEvent。document.addEventListener("DOMContentLoaded", init,false);dom渲染完成,doScroll方法从不能执行到可执行,这样我们在IE中,利用doScroll()方法来模拟 addDOMLoadEvent 事件,现在主流的 Java 阅读全文
posted @ 2013-05-22 23:25 小方。 阅读(1163) 评论(5) 推荐(1) 编辑
摘要:一、开始 1、简单使用 编辑器搜索时,勾选上正则,可以搜索出满足特定条件的结果。 在webstorm中,\bfunction\b这样可以搜索出function单词。做搜索功能时 做搜索功能时 var reg = new RegExp(inpStr); apps.forEach(function (v 阅读全文
posted @ 2013-04-27 07:48 小方。 阅读(808) 评论(2) 推荐(0) 编辑