JavaScript语言是一门优秀的脚本语言。其中包含脚本语言的灵活性外还拥有许多高级语言的特性。例如充许构建和实例化一个对象,垃圾回收机制(GC:Garbage Collecation)。通常我们使用new创建对象,GC负责回收对象占用内存区域。因此了解GC,可以加深对javascript垃圾回收机制的理解。
GC在回收内存时,首先会判断该对象是否被其它对象引用。在确定没有其它对象引用便释放该对象内存区域。因此如何确定对象不再被引用是GC的关键所在。
移除一个函数 直接给他重命名即可//例如你有一个函数叫做SayHello
function SayHello(){
alert('hello world')
}
console.log(SayHello)//输出函数对象
//删除函数
var SayHello = null
console.log(SayHello)//输出null;SayH
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架)。
jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 jQuery的模块可以分为:入口模块、底层支持模块和功能模块。其核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。
第一个例子是为元素注册一个事件:
Behaviour.register({'#exampleli':function(e){ e.onclick=function(){ this.parentNode.removeChild(this)} } })
他认为应该改写为:
$('#exampleli').bind('click',function(){ this.parentNode.removeChild(this)})第二个例子是为不同的元素注册不同的事件: Behaviour.register({'b.someclass':function(e){ e.onclick=function(){ alert(this.innerHTML)} },'#someidu':function(e){ e.onmouseover=function(){ this.innerHTML="BLAH!"} } })
他认为应该改写为:
$('b.someclass').bind('click',function(){ alert(this.innerHTML)})$('#someidu').bind('mouseover',function(){ this.innerHTML='BLAH!'})
第三个例子是为不断变化的元素注册不同的事件:
Behaviour.register({'#fooolli':function(a){ a.title="ListItems!"a.onclick=function(){alert('Hello!')}},'#fooolli.tmp':function(a){ a.style.color='white'},'#fooolli.tmp.foo':function(a){ a.style.background='red'} })
他认为应该改写为:
$('#fooolli') .set('title','ListItems!') .bind('click',function(){alert('Hello!')}) .select('.tmp') .style('color','white') .select('.foo') .style('background','red')
1.addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作;
2.所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。最有这个布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序;
3.由于IE只支持事件冒泡,所以同大多数情况下,都是将事件处理程序添加到事件流的冒泡阶段,这样可以最大限度地兼容各种浏览器;
最好只在需要在是事件到达目标之前截获它的时候将事件处理程序添加到捕获阶段。如果不是特别需要,不建议在事件捕获阶段注册事件处理程序。