关于JS的几段代码:
for(var i=0;i<a.length;i++){
alert(a[i]);
}
//打印:a c
for(var i in a){
alert(i);
}
//打印 0 1
for(var i in a){
alert(a[i]);
}
//打印 a c
事实上['a','c']的数组其实就是一个隐式的{0:'a',1:'c'}的Hash对象;
for(var p in h){
alert(h[p]);
}
//打印v1 v2:
事实上:
h.p2=h2['p2'];//可以用来实现反射;
2:关于短路运算的常用方式;
在JS中我们经常要求开发者在使用JS功能接口的时候提供一系列参数,这个参数是可选的;如果没有提供参数的时候,我们选择采用默认的参数设置;
var option=option || default;
}
因为option没有设置的时候,||运算会往后走,最后采用Default Option,而当Option被指定了时,而短路规则不会再往后走;
3:关于闭包
运行之后,我们知道在生成的function中,我们无法得到”Corey“;如何得到:
4:jquery的extend实现
$.extends(a,b,c)的实现很简单;
就是利用:
来实现继承和覆盖;
5:JS中实现观察者模式:
var listener={
onEvent:function(e){} //默认实现
}
var Subject={
listeners:[]
publishEvent:function(){
for(var l in this.listeners){
this.listeners[i].onEvent(e);
}
},
add:function(l){
this.listsners.push(l);
}
}
var observer1=$.extend({},listener);
var observer2=$.extend({},listener,{
onEvent:function(e){
//custom handle
}
});