javascript设计模式_第二部分_链式调用
链式调用是一个语法招数.包含两个部分:
1.一个创建HTML元素的对象的工厂
2.对这个HTML元素执行的操作的方法
[个人理解:将HTML元素包装成对象,在对象上添加方法(重点在return this)]
构造器
(function(){
//Use a private class
function _$(els){
this.elements = [];
for(var i=0; i<els.length; i++){
var element = els[i];
if(typeof element === "string"){
element = document.getElementById(element);
}
this.elements.push(element);
}
}
//
_$.prototype = {
each : function(fn){
for(var i=0; i<this.elements.length; i++){
fn.call(this,this.elements[i]);
}
return this;
},
setStyle : function(prop,val){
this.each(function(el){
el.style[prop] = val;
});
return this;
},
show : function(){
var that = this;
this.each(function(el){
that.setStyle("display","bloc");
});
return this;
},
addEvent : function(type,fn){
var add = function(el){
if(window.addEventListener){
el.addEventListener(type,fn,false);
}
else if(window.attachEvent){
el.attachEvent("on"+type,fn);
}
}
this.each(function(el){
add(el);
})
return this;
}
};
//the public interface remains the same
window.$ = function(){
return new _$(arguments);
}
})()
使用回调从支持链式调用的方法获取数据
链式调用很适合于赋值器方法,但对于取值器方法,你可能会希望它们返回你要的数据而不是返回this.
window.API2 = window.API2 || function(){
var name = "hell";
this.setName = function(newName){
name = newName;
return this;
};
this.getName = function(callback){
callback.call(this,name);
return this;
}
};
var o2 = new API2;
o2.getName(console.log).setName("Menw").getName(console.log);
相关文档:
直接使用未定义的Javascript变量时,页面会报错并无法执行,比如
if (varName=="")
{
}
需要先判断变量是否定义,使用typeof函数可以判断,如下使用:
if (typeof(ipaddr)=='undefined')
{
window.alert('ipaddr未定义');
} ......
0.链接css文件和js文件
<link rel="stylesheet" href="../css/style.css" mce_href="css/style.css" type="text/css">
<mce:script language="javascript" src="../includes/jslib.js" mce_src="includes/jslib.js" ></mce:script>
1.关闭输入法
<input style="ime-mode ......
//第一种构造方法: new Object()
var a = new Object();
a.x = 1, a.y = 2;
//第二种构造方法: 对象直接量
var b = {x:1,y:b};
//第三种构造方法: 定义类型
function Point(x,y)
{
......
表单的验证在实际的开发当中是件很烦琐又无趣的事情
今天在做一个小项目的时候,需要JS验证,寻找到一个比较好的东西
地址如下:
http://blog.csdn.net/goodfunman/archive/2005/10/21/513338.aspx
http://blog.csdn.net/yhl_621/archive/2006/03/04/615273.aspx
http://blog.csdn.net/NetDreamwing/archive/2004/1 ......
<script language = "JavaScript">
function unicode(s){
var len=s.length;
var rs="";
for(var i=0;i<len;i++){
var k=s.substring(i,i+1);
rs+="&#"+s.charCodeAt(i)+";";
}
return rs;
}
function runicode(s){
var k=s.split(";");
var r="";
for(var x=0;x<k.length;x++){ ......