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