如何引入类似于ExtJs的类系统

时间:2012-10-11 00:21:05

标签: javascript extjs extjs4

我试图解决这个看ExtJs代码,但我没有得到那里发生的魔法。

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

  • 定义
  • 创建

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

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

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

有没有人在javascript中看到任何涉及类系统主题的材料?

1 个答案:

答案 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');