Merge pull request #1224 from twpayne/faster-object-getkeys
Make ol.Object#getKeys about 10x faster
This commit is contained in:
@@ -191,10 +191,29 @@ ol.Object.prototype.get = function(key) {
|
|||||||
* @return {Array.<string>} List of property names.
|
* @return {Array.<string>} List of property names.
|
||||||
*/
|
*/
|
||||||
ol.Object.prototype.getKeys = function() {
|
ol.Object.prototype.getKeys = function() {
|
||||||
var keys = goog.object.getKeys(ol.Object.getAccessors(this)).concat(
|
var accessors = ol.Object.getAccessors(this);
|
||||||
goog.object.getKeys(this.values_));
|
var keysObject;
|
||||||
goog.array.removeDuplicates(keys);
|
if (goog.object.isEmpty(this.values_)) {
|
||||||
return keys;
|
if (goog.object.isEmpty(accessors)) {
|
||||||
|
return [];
|
||||||
|
} else {
|
||||||
|
keysObject = accessors;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (goog.object.isEmpty(accessors)) {
|
||||||
|
keysObject = this.values_;
|
||||||
|
} else {
|
||||||
|
keysObject = {};
|
||||||
|
var key;
|
||||||
|
for (key in this.values_) {
|
||||||
|
keysObject[key] = true;
|
||||||
|
}
|
||||||
|
for (key in accessors) {
|
||||||
|
keysObject[key] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return goog.object.getKeys(keysObject);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user