JS OO 开发简单实例
//================================== 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();
开源:
https://github.com/hcxiong 欢迎收藏:)