- 浏览: 7099 次
- 性别:
- 来自: 重庆
最近访客 更多访客>>
最新评论
-
libmw:
xyztony1985 写道忽略了IE不好,国内基本都用的IE ...
关于事件流在各个浏览器下触发顺序的讨论 -
xyztony1985:
忽略了IE不好,国内基本都用的IE
关于事件流在各个浏览器下触发顺序的讨论
文章列表
虽然现在各大高级浏览器都支持了数组对象的扩展方法,例如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
- 博客分类:
- javascript
今天才发现,原来我对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 ...