js动态创建类和实例化

4534次阅读  |  发布于5年以前

在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数量级上没有很大的区别。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8