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數量級上沒有很大的區別。


所屬標簽

無標簽

25选5玩法中奖