javascript面向对象之我解
2010-09-14 13:32:52 来源:WEB开发网Function.prototype.inherit = function(baseClass) {
this.prototype.base = new baseClass();
for(var property in this.prototype.base) {
if(!this.prototype[property]) {
this.prototype[property] = this.prototype.base[property];
}
}
}
Object.prototype.baseInitialize = function() {
if(this.base) {
this.base.constructor.apply(this, arguments);
}
}
Object.prototype.mixin = function(obj) {
for(var property in obj) {
this[property] = obj[property];
}
return this;
}
Object.prototype.findFuncName = function(func) {
for(var p in this) {
if(this[p] == func)
return p;
}
return null;
}
Object.prototype.runBase = function(args) {
var caller = this.runBase.caller;
var funcName = this.findFuncName(caller);
var classType = this.constructor;
if(classType.prototype[funcName]) {
classType.prototype[funcName].apply(this, args);
}
}
function showInfo(obj) {
var info = 'type:' + typeof(obj) + 'n';
for(var p in obj) {
info += p + 'n';
}
alert(info);
}
function class1(astr) {
this.a = astr;
this.m = function() {
this.a = 'hello';
}
}
function class2() {
this.baseInitialize('class2');
this.m = function() {
this.runBase();
alert(this.a);
}
}
class2.inherit(class1);
function test() {
var c1 = new class2();
alert(c1.constructor);
c1.m();
}
使用的时候需要遵守几个规范:
1、所有类的方法都用内联的方式定义,可以最大限度减少继承的副作用;
2、暂时没有,将来增加。
PS:这篇文章已经写了三天了,边写边想,越想越多,自觉有不少收获。另外,前些日子看了下ruby,把js与ruby作对比,同时加深了我对这两种语言的理解,感觉不错。其他的还没有想到。如果我的任何认识有任何不正确的地方,希望斧正,谢谢!
博客:http://homer.cnblogs.com/
Tags:javascript 面向 对象
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接