在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