摘要: this,who are you?这个问题有时很重要。概括的来讲:this是个引用,永远指向当前代码所处的对象中。还有个需要注意的技巧:如何动态的改变这个this?也就是说我能规定this是谁吗?答案是可以的,你可以控制这件事。可以用call()函数和apply()函数。call()和apply()是Function.prototype对象中的方法,也就是说任何函数都有一个call和apply方法,用这个方法可以定义该方法执行的上下文(this)和参数。看代码:输出:apply和call把第一个参数定义为上下文对象,也就是this的指向,其余参数作为函数的参数。不同的是apply的第二个参数是 阅读全文
posted @ 2011-04-19 21:37 orchid 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 闭包意味着内层的函数可以引用外层函数内的变量,即使外层函数的执行已经终止,引用依然存在。看下面这个例子:有这样一个导航<ul> <li>随笔</li> <li>文章</li> <li>新闻</li></ul>为每一个itm添加点击事件:var liEle=document.getElementsByTagName('li');for(var i=0;i<liEle.length;i++){liEle[i].onclick=function(){alert(i);}}alert( 阅读全文
posted @ 2011-04-19 21:16 orchid 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 第一句话需要记住的:javascript中的作用域由函数划分而非由块(如 if while)划分。第二句话需要记住的:所有的全局作用域的变量其实都是window对象的属性。第三局话需要记住的:如果一个变量不用var声明,那么这个变量不管定义在哪里,它都是全局的。 阅读全文
posted @ 2011-04-19 20:40 orchid 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 在javascript中进行类型检查,主要有两种方式。一种是利用typeof操作符,一种是利用javascript所有对象都有的一个constructor属性。一:先来分析typeof用typeof来进行类型检查的方式:用typeof进行类型检查,所有的自定义类型都会返回object,所以不能区分出到底是个对象。二:用construtor属性constructor属性的原理:所有的javascript对象都有一个constructor属性,它引用的是原本用来构造该对象的那个函数。用constructor属性进行类型检查的方式:代码:输出:所以,用construcor能够尽心更加准确的类型检测。 阅读全文
posted @ 2011-04-19 20:31 orchid 阅读(237) 评论(0) 推荐(0) 编辑