闭包方式:
var Person = function()
{
this.init = funtion()
{ initDom();
initEvent();
}
function initDom ()
{}
function initEvent()
{}
}
//使用时
var per = new Person();
per.init();
闭包,就是要实现非侵入DOM脚本编程,关于非侵入DOM脚本编程优势大家可以网上查.关键看起来更像是一个类与对象概念,很好实现了私有方法与共公方法隔离。如果我们不需要它在被new时执行,定义后就执行完全可以匿名它,就是一个单例
(function(){
function initDom(){}
function initEvent() {}
return{
init:function(){initDom();initEvent(); }
}
})();
如果是带参数的 如何做?
(function(k,m){
function initDom(){alert(k);}
function initEvent() {alert(m);}
initDom();
initEvent();
})(11,12);
*在函数声明后面加上括号就表示创建完成后立即进行函数调用
Json格式:
var Person = {init:function(){},initDom:function() {},
initEvent:function() {} };
访问Person.init(),我们不能new它出来。因为Person本身已经是Object了
考虑以下:
alert(typeof(Function)));
alert(typeof(new Function()));
alert(typeof(Array));
alert(typeof(Object));
alert(typeof(new Array()));
alert(typeof(new Date()));
alert(typeof(new Object()));
前四个显示function 后三个是object,Json本身是object了,而指定一个function的变量是可以被new的
*Function 与function 可以理解为 function是一个 New Function 的实例
*而var fun = new function() 可以理解为fun是一个指向变量
Json格式也被可以构造成一个类方式,就需要prototype,这个以后讨论