//================================== JS OO 开发简单实例 ==================================
//========== 对像扩展 ====================================================================
var OO1 = {
a : function (){ alert( " OO1a " ); },
b : function (){ alert( " OO1b " ); }
};
OO1.c = function (){ alert( " OO1c " ); }
OO1.d = function (){ alert( " OO1d " ); }
OO1[ " e " ] = function (){ alert( " OO1e " ); }
OO1[ " f " ] = function (){ alert( " OO1f " ); }
// OO1.a(); OO1.b(); OO1.c(); OO1.d(); OO1.e(); OO1.f();
// 不能原生扩展 如下会出错
// OO1.prototype.g = function(){ alert("OO1g"); }
// OO1.prototype.h = function(){ alert("OO1h"); }
//========== 函数扩展 ====================================================================
var OO2 = function () {
this .a = function () { alert( " OO4a " ); }
this .b = function () { alert( " OO4b " ); }
};
OO2.c = function (){ alert( " OO2c " ); }
OO2.d = function (){ alert( " OO2d " ); }
OO2[ " e " ] = function (){ alert( " OO2e " ); }
OO2[ " f " ] = function (){ alert( " OO2f " ); }
OO2.prototype.g = function (){ alert( " OO2g " ); }
OO2.prototype.h = function (){ alert( " OO2h " ); }
OO2.prototype = {
i : function (){ alert( " OO2i " ); },
j : function (){ alert( " OO2j " ); }
}
// OO2.c(); OO2.d(); OO2.e(); OO2.f();
// 函数原生扩展和this扩展需要实例化后访问
var testOO2 = new OO2()
// testOO2.a(); testOO2.b(); testOO2.g(); testOO2.h(); testOO2.i(); testOO2.j();
//========== 系统原生对象扩展 ============================================================
var OO3 = Function;
OO3.prototype[ " e " ] = function (){ alert( " Function.e " ); } // 等同于 Function.prototype["e"] = function(){ alert("Function.e"); }
OO3.prototype[ " f " ] = function (){ alert( " Function.f " ); }
OO3.prototype.g = function (){ alert( " Function.g " ); } // 等同于 Function.prototype.g = function(){ alert("Function.g"); }
OO3.prototype.h = function (){ alert( " Function.h " ); }
// OO3.e(); OO3.f(); OO3.g(); OO3.h();
var testOO3 = function (){}; // 等同于 var testOO3 = new OO3();
// testOO3.e(); testOO3.f(); testOO3.g(); testOO3.h();
// ========== OO1.Class 是命名空间 ============================================================
OO1.Class = {}
OO1.Class.Session = {
set : function (){ alert( " Session.set " ); },
get : function (){ alert( " Session.get " ); }
}
// OO1.Class.Session.set(); OO1.Class.Session.get();
var session = OO1.Class.Session;
// session.set(); session.get();
//========== extend =========================================================================
Object.prototype.extend = function () {
var source, key, len = arguments.length, destination = this ,
isbool = typeof arguments[len - 1 ] == ' boolean ' , override = isbool ? arguments[len - 1 ] : true ;
if (len == 0 ) return null ;
for ( var i = 0 ,len = isbool ? len - 1 : len; i < len; i ++ ) {
source = arguments[i];
for (key in source) { if (override || ! (key in destination)) destination[key] = source[key]; };
};
return destination;
};
var oo5 = function () {}
oo5.o = function (){ alert( " OO5o " ); }
oo5.p = function (){ alert( " OO5p " ); }
var oo5 = oo5.extend({
x : function (){ alert( " OO5x " ); },
y : function (){ alert( " OO5y " ); }
},{
m : function (){ alert( " OO5m " ); },
n : function (){ alert( " OO5n " ); }
},{
x : function (){ alert( " OO5x1 " ); },
y : function (){ alert( " OO5y1 " ); }
},OO1, false );
// oo5.x();oo5.y();oo5.m();oo5.n();oo5.a();oo5.b();oo5.c();oo5.d();oo5.o();oo5.p();