02月24, 2010

js动态创建类和实例化

在js中,创建一个类和实例化该类一般方式是:

var cls = function() {}
cls.prototype = {
    attr: '',
    method: function() {}
}
var clsInstance = new cls;

这种方式简单明了,但如果类很多的话就比较痛苦了,并且代码看起来不够优化。

动态创建类

动态创建类实际上类似于一种代理的模式,代码如下:

var Fath = function(methods) {
    var cls = function() {
        return new fn(arguments);
    },
    fn = function(args) {
        return this.init && this.init.apply && this.init.apply(this, args);
    };
    fn.prototype = cls.prototype = methods || {};
    try {
        return cls;
    } finally {
        cls = null;
    }
}

创建一个类: var TestClass = Fath(methods) //这里的methods是方法或者属性集合,是一个静态对象 实例化该类: var testInstance = TestClass(params) //这里的params是传进去的形参 通过这种方式后,一个好处就是实例化类的时候不用再使用new了,当然使用new也是可以的,作用的等价的。避免了到处是new和prototype的好处。 性能上在1K数量级上没有很大的区别。

本文链接:http://welefen.com/post/js%e5%8a%a8%e6%80%81%e5%88%9b%e5%bb%ba%e7%b1%bb%e5%92%8c%e5%ae%9e%e4%be%8b%e5%8c%96.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。