`
libmw
  • 浏览: 7099 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
虽然现在各大高级浏览器都支持了数组对象的扩展方法,例如some,forEach等,但是为了兼容各低端浏览器,流行框架会添加自己的支持方法,下面列出常用的一些扩展: <script> Array.prototype.indexOf = function(item, fromIdx){ var length = this.length; fromIdx = fromIdx == null ? 0 : fromIdx < 0 ? Math.max(0, fromIdx + length) : fromIdx; for(; fromIdx < ...
想象一个场景,一个function的作用是进行大量的计算,然后返回这个计算结果。 那么我们是不是在每次调用的时候都计算一次呢?这样肯定不是好办法。 解决办法是把结果存起来,然后再次调用的时候直接返回结果: function lazy(){ var r = doSomething..; lazy = function(){ return r; } return lazy(); } 当然,惰性方法只适用于每次返回结果都一样的场景。如果每次计算结果可能不一致,那么这种方法也就失效了。
我们在一个闭包计数器的时候通常写成: var count = (function (){ var c = 1; return function(){ return c++; } })(); 有没有其他方法实现同样的功能?答案是有的,那就是自我重写的function: function count(){ var c = 1; count = function(){ return c++; } return c++; }
由于各个浏览器的兼容问题,在写脚本的时候经常会为了兼容多个浏览器而写多个分支。 判断浏览器的方法一种是使用userAgent,一种是使用特性判断,这里以特性判断为例。 例如: function addEvent(obj, type, func){ if(document.addEventListener){ obj.addEventListener(type, func, false); }else if(document.attachEvent){ obj.attachEvent('on' + type, func); } } 这种方法使用判断d ...
今天才发现,原来我对this的理解竟然如此模糊,原来我对new的了解也没有那么多。。 伤心  早晨无意中写了一段代码: function test(){ this.a=100; console.log(a); } try{ new test(); }catch(e){ console.log(e); } try{ test(); }catch(e){ c ...
function a(){ alert(1); } a() function a(){ alert(2); } a() a = function (){ alert(3); } a() a= function (){ alert(4); } a() /* *输出的结果是 2 2 3 4 *得出结论是 如果是赋值定义函数,则赋值后及时后面有function a也不影响a,如果是function a 定义函数,如果后面有function a那么后面个function a才是作用域里面a的真正值 *一句话:对于functon a()形式定义的函数,如果后面 ...
大家都知道dom的事件流顺序:先捕获,再冒泡,我写了个小测试(本文忽略ie浏览器,主要讨论标准dom事件流) 测试环境: ff=>Firefox3.3.11 opera=>Opera10.63 chrome=>Chrome6.0(有点老了,平时用的ff) <html> <body> <div>触发顺序:</div> </body> <script type="text/javascript"> (function(){ //var divObj = document.g ...
Global site tag (gtag.js) - Google Analytics