perf(view): inline and refactor view instantiation and hydration

- Don’t convert DOM array into JS array via `Array.slice`
- Inline static methods for instantiation and hydration
- Misc cleanup

Closes #291
This commit is contained in:
Tobias Bosch
2014-12-09 10:31:19 -08:00
parent 8acf9fb609
commit 3ec3d5e084
11 changed files with 223 additions and 254 deletions

View File

@ -32,6 +32,7 @@ class IterableMap extends IterableBase<List> {
class MapWrapper {
static HashMap create() => new HashMap();
static HashMap clone(Map m) => new HashMap.from(m);
static HashMap createFromStringMap(m) => m;
static HashMap createFromPairs(List pairs) {
return pairs.fold({}, (m, p){

View File

@ -6,6 +6,7 @@ export var Set = window.Set;
export class MapWrapper {
static create():Map { return new Map(); }
static clone(m:Map):Map { return new Map(m); }
static createFromStringMap(stringMap):Map {
var result = MapWrapper.create();
for (var prop in stringMap) {
@ -63,8 +64,8 @@ export class ListWrapper {
static createFixedSize(size):List { return new List(size); }
static get(m, k) { return m[k]; }
static set(m, k, v) { m[k] = v; }
static clone(array) {
return Array.prototype.slice.call(array, 0);
static clone(array:List) {
return array.slice(0);
}
static map(array, fn) {
return array.map(fn);

View File

@ -68,11 +68,8 @@ class DOM {
static clone(Node node) {
return node.clone(true);
}
static setProperty(Element element, String name, value) {
new JsObject.fromBrowserObject(element)[name] = value;
}
static getProperty(Element element, String name) {
return new JsObject.fromBrowserObject(element)[name];
static hasProperty(Element element, String name) {
return new JsObject.fromBrowserObject(element).hasProperty(name);
}
static getElementsByClassName(Element element, String name) {
return element.getElementsByClassName(name);

View File

@ -63,11 +63,8 @@ export class DOM {
static clone(node:Node) {
return node.cloneNode(true);
}
static setProperty(element:Element, name:string, value) {
element[name] = value;
}
static getProperty(element:Element, name:string) {
return element[name];
static hasProperty(element:Element, name:string) {
return name in element;
}
static getElementsByClassName(element:Element, name:string) {
return element.getElementsByClassName(name);