La plupart des fonctionnalités de ce nouveau paquet existait sous ExtJs 3, mais que les modifications s'effectuaient en prototypant le noyau d'objet JavaScript. Bien que cela était pratique, il fait très difficile pour ExtJs de coexister avec d'autres langages qui modifiaient les mêmes objets. Cela signifiait aussi que ExtJS était directement exposée à tout les changement qui pouvait se produire dans la spécification ECMAScript. Pour remédier à ces problèmes les développeurs ont tout déplacé dans un espace de noms statiques.
Toutes les améliorations Prototype aux objets suivants ont été déplacés en conséquence (note qu'il n'y a pas réellement un lang espace de noms - c'est juste le paquet qui contient ces nouveaux fichiers dans l'arborescence de la source):
Il ya peu de changements notables à la manière dont les méthodes Fonction ont été mis en œuvre en ExtJs4. Plus important encore, le Function.createDelegate et Function.createCallback sont maintenant nommés Ext.Function.bind et Ext.Function.pass. De même, Function.defer est maintenant disponible en Ext.Function.defer. Parce que ces trois fonctions sont couramment utilisés, ils sont aussi alias sur Ext.bind , Ext.pass et Ext.defer.
Les autres méthodes comme createSequence et createInterceptor ont également été transférée à Ext.Function , il ya aussi quelques nouveaux ajouts utiles comme createBuffered et createThrottled .
Voici quelques exemples de la façon dont la syntaxe d'appel a changé:
// ExtJs 3:
myFunction.createDelegate(this, [arg1, arg2]);
myFunction.defer(1000, this);
// ExtJs 4:
Ext.bind(myFunction, this, [arg1, arg2];
Ext.defer(myFunction, 1000, this);