对js的类进行面向对象扩展,我已经完成,希望高手来探讨
2013-08-27 22:58
477 查看
js不好继承,用的时候都是一些很奇怪的方法,比如call,再比如如下
function a(){
this.b = 1
}
function b() {
this.parent =a;
this.parent();
delete this.parent;
}
然后再prototype
for() {
xxxx
}
看起来好丑啊,完全没有韵味,琢磨着,对Function 加个extend方法,然后就有了下边的代码:
Function.prototype.extend = function(parent) {
var _this = this;
var child = function(){
this.parent = parent;
this.parent.apply(this,arguments);
this.me = _this;
this.me.apply(this,arguments);
delete this.parent;
delete this.me;
}
for(var k in parent.prototype) {
child.prototype[k] = parent.prototype[k]
}
return child;
}
然后来做个实验
function a(c) {
this.v_1 = c;
this.setV = function(v) {
this.v_1 = v;
}
}
a.prototype.show = function(){
alert(this.v_1);
}
var b = function(){
this.v_2 = 2;
this.setV2 = function(v) {
this.v_2 = v;
}
}.extend(a);
var c = new b(8);
c.show();
c.setV(2);
c.show();
alert(c.v_2);
c.setV2(3);
alert(c.v_2);
看来看去也没有什么问题,希望高手进来探讨探讨
function a(){
this.b = 1
}
function b() {
this.parent =a;
this.parent();
delete this.parent;
}
然后再prototype
for() {
xxxx
}
看起来好丑啊,完全没有韵味,琢磨着,对Function 加个extend方法,然后就有了下边的代码:
Function.prototype.extend = function(parent) {
var _this = this;
var child = function(){
this.parent = parent;
this.parent.apply(this,arguments);
this.me = _this;
this.me.apply(this,arguments);
delete this.parent;
delete this.me;
}
for(var k in parent.prototype) {
child.prototype[k] = parent.prototype[k]
}
return child;
}
然后来做个实验
function a(c) {
this.v_1 = c;
this.setV = function(v) {
this.v_1 = v;
}
}
a.prototype.show = function(){
alert(this.v_1);
}
var b = function(){
this.v_2 = 2;
this.setV2 = function(v) {
this.v_2 = v;
}
}.extend(a);
var c = new b(8);
c.show();
c.setV(2);
c.show();
alert(c.v_2);
c.setV2(3);
alert(c.v_2);
看来看去也没有什么问题,希望高手进来探讨探讨
相关文章推荐
- [js高手之路]设计模式系列课程-设计一个模块化扩展功能(define)和使用(use)库
- 对js的函数方法进行扩展
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展camelize与dasherize方法(3)
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- Lua编程(二) 表面向对象、metatable对表进行扩展
- 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
- 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
- ECharts 统计扩展 ecStat.js, 可以进行回归分析和均值方差计算
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展camelize与dasherize方法(3)
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展字符串位置方法(4)
- [js高手之路] es6系列教程 - 对象功能扩展详解
- Node.js项目实战-构建可扩展的Web应用(第一版): 6 在Node.js应用中使用session和OAuth进行用户认证和授权
- 写了些JS扩展,有错误请指出,希望对大家有用^^
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- JS里的prototype对JS类(方法,函数,function)进行一个扩展吧!
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- 面向对象的JavaScript(如何一步步成为js高手)
- 对 移动端响应式框架 pageResponse.js 进行扩展,完成自己的需求
- 写了些JS扩展,有错误请指出,希望对大家有用^^