【发布时间】:2011-05-30 16:11:26
【问题描述】:
有时我们在定义新对象时会丢失新关键字,
obj = new Clazz(); //correct
obj = Clazz(); //wrong, but no syntax error, hard to debug.
我想编写一个函数来帮助我创建 Class 并使其安全。
var Class = function(){
var constructor = arguments[0];
var superClasses = arguments[1..n];
function clazz(){
if(! this instanceof clazz){
return new clazz()//pass clazz arguments,not Class arguments
}
constructor();//pass clazz arguments
}
//clazz inherit from superClasses
return clazz;
}
var MyClazz = Class(function(name){
this.name = name
}, SuperClazz1, SuperClass2 )
MyClazz.extend({
show: function(){console.log(this.name)}
})
obj1 = new MyClazz("name1");
obj2 = MyClazz("name2");
// obj1 should same as obj2
有没有可能,有模块吗?
【问题讨论】:
标签: javascript oop node.js