1

我试图通过查看 ExtJs 代码来解决这个问题,但我没有得到那里发生的魔力。

我想重新创建 Ext 类行为,可以将其剥离为两个基本功能:

  • 定义
  • 创造

定义用于为新类保留命名空间并保存对类构造函数的引用(至少我的调试表明这一点)。样品用法:Ext.define('Foo', {param: 1})

Create 用于实例化仅返回新对象实例的类。

现在我想知道在“定义”步骤中应该存储什么,因为 afaik 构造函数本身不足以实例化一个对象?(或者我错了)

有没有人看到任何关于 javascript 中类系统主题的材料的参考资料?

4

1 回答 1

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');
于 2012-10-11T00:38:36.023 回答