随笔分类 - javascript
摘要:最近忙于重构项目,今天周末把在重构中的一些思想记记:一、javascript的组件开发:基类的封装由于这次重构项目需要对各种组件进行封装,并且这些组件的实现方式都差不多,所以想到对组件封装一个base基类(javascript没有类的概念,暂且这样叫把),由于javascript没有原生的类和继承的...
阅读全文
摘要:实现原理:HTML5 的 postMessage 为解决跨域页面通信提供了一套可控的机制, 而 localStorage 则提供了易用简洁的本地存储方案? 这两者结合起来,能否实现跨域的本地存储呢 ?答案是可以的。假设有 a.com 和 b.com 两个页面。我们想通过 a 页面去修改 b 页面的本...
阅读全文
摘要:上一个月一直忙于项目,没写过笔记,今天稍微空下来了一点前几天在写项目的时候关于怎么去封装每一个组件的时候思考到几种方式,这里总结一下:1、构造函数方式(类似java写类的方式):把所有的属性和方法全部挂在构造函数内部的this上: 1 function Textarea(opts) { 2 ...
阅读全文
摘要:笔者早些时间看过web sql database,但是不再维护和支持,所以最近初步学习了一下indexedDB数据库,首先indexedDB(简称IDB)和web sql database有很大的差别,因为IDB不像web sql database那样用数据库语句去操作浏览器本地数据库(有过数据库基...
阅读全文
摘要:1 var bb_mes_con = $('bb_mes_con');2 var mes_html = document.createElement('div');3 mes_html.setAttribute('id', 'mes_html');4 mes_html.innerHTML = ""+...
阅读全文
摘要:第一点:首先appendChild插入节点时返回的值是插入的节点本身,另外必须要找到所要插入的父节点:1 var returnNode = parentNode.appendChild(childNode);2 console.log(returnNote===childNode);//true第二...
阅读全文
摘要:先上jquery源码: 1 grep: function( elems, callback, inv ) { 2 var retVal, 3 ret = [], 4 i = 0, 5 length = elems.length; 6 i...
阅读全文
摘要:方法一:数组(字串)循环法 1 function toThousands(num) { 2 var result = [ ], counter = 0; 3 num = (num || 0).toString().split(''); 4 for (var i = num.l...
阅读全文
摘要:1 var bgAuido={ 2 audio : pingfan.$$('audio'), 3 audioBtn : pingfan.$$('audioBtn'), 4 init : function(){ 5 var _this=this; 6 ...
阅读全文
摘要:表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:1、点击提交按钮两次。2、点击刷新按钮。3、使用浏览器后退按钮重复之前的操作,导致重复提交表单。4、使用浏览器历史记录重复提交表单。5、浏览器重复的HTTP请求。 防止表单重复提交的几...
阅读全文
摘要:重定向会增加http请求的次数,会影响到整个网站的性能,但是必要的重定向又可以提高用户体验,所以我们需要在性能和用户体验之间去权衡,达到最好的目的:下面讲讲php实现301永久重定向和302临时重定向以及怎么去避免重定向:一、对于许多站点而言,以本站域名baidu.com为例:用户在浏览器中输入网址...
阅读全文
摘要:1、1 if (!("a" in window)) {2 var a = 1;3 }4 alert(a);阅读代码:如果window不包含属性a,就声明一个变量a,然后赋值为1,最后弹出这个变量的值。理解代码:javascript没有块级作用域,所以var a=1;定义的a是全局的,又因为全...
阅读全文
摘要:在javascript中我们了解到了setTimeout和setInterVal函数事件队列(任务队列)的相关知识,除了setTimeout和setInterval这两个方法外,Node.js还提供了另外两个与"任务队列"有关的方法:process.nextTick和setImmediate。它...
阅读全文
摘要:浏览器缓存主要有两类缓存协商:Last-midified ,Etag彻底缓存:cache-control,Expires 缓存协商的意思是需要去服务器端询问页面有没有修改过,没有修改过则返回304直接使用缓存内容,否则返回新内容协商步骤:1、服务器发送带Last-midified:GMTtime ...
阅读全文
摘要:JScript和ECMAScript的变现不一致,但是对于现在的w3c规范来说都是遵循ECMAScript的。所以函数申明和函数表达式对JScript的表现在此就不做过多的介绍,可以移步汤姆大叔blog深入学习:揭秘命名函数表达式1 function foo(){ return 1; }//函数...
阅读全文
摘要:1 //1 2 1;setTimeout的异步我这里就不做过多的解释(异步回调,事件队列相关知识),主要写一下对一个参数是字串的时候注意的地方从上面的代码中我们可以看出来,setTimeout的第一个参数为字串的时候,其实它相当于new 了一个Function在Function里面去定义的a变量,相...
阅读全文
摘要:一、首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名).1 (function() {// ...})(); 二、自执行函数和其他函数类似,都可以传入参数:jQuery源码中将w...
阅读全文
摘要:varfoo=1;functionbar(){if(!foo){varfoo=10;}alert(foo);}bar();//解释:js没有块级作用域,if switch while等不会有块级作用域如果你对foo的值实际上为"10"而感到诧异的话,再看一下下面这个例子:vara=1;functio...
阅读全文
摘要:1.作用域(scope):在javascript没有块级作用域,是由函数来划分的。变量和函数的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域(with和eval除外)。当定义了一个函数,当前的作用域链就保存起来,并且成为函数的...
阅读全文
摘要:var rand = (function(){ var today = new Date(); var seed = today.getTime(); function rnd(){ seed = ( seed * 9301 + 49297 ) % 233280; return ...
阅读全文