我试图解决这个看ExtJs代码,但我没有得到那里发生的魔法。
我想重新创建Ext类行为,可以将其剥离为两个基本函数:
Define用于为新类保留命名空间并保存对类构造函数的引用(至少我的调试表明这一点)。示例用法:Ext.define('Foo', {param: 1})
;
Create用于实例化只返回新对象实例的类。
现在我想知道应该在'define'步骤中存储什么,因为afaik构造函数本身不足以实例化一个对象? (或者我错了)
有没有人在javascript中看到任何涉及类系统主题的材料?
答案 0 :(得分:1)
Douglas Crockford在JavaScript中有一篇关于经典继承的好文章:http://www.crockford.com/javascript/inheritance.html
我认为有些伪代码与Sencha在Ext中的作用相似(尽管我认为你应该首先看一下上面链接中的正确实现):
//define takes class name (string) and definition(object)
//definition in this case should have a method called constructor()
var classes = {};
classes.define = function(className, definition){
classes[className] = definition;
}
//call create with class name and it will make a new class using that constructor
classes.create = function(className){
return new classes[className].apply(this);
}
classes.define('Hello',{name: "Pi" , game : "Tennis"});
console.log(classes);
classes.create('Hello');