- use prototype-less objects where feasible (minor speed improvement)
- get rid of HOP
This commit is contained in:
Mihai Bazon
2012-10-11 11:07:42 +03:00
parent 5053a29bc0
commit 172aa7a93c
5 changed files with 37 additions and 43 deletions

View File

@@ -57,7 +57,7 @@ function prog1(ret) {
};
function array_to_hash(a) {
var ret = {};
var ret = Object.create(null);
for (var i = 0; i < a.length; ++i)
ret[a[i]] = true;
return ret;
@@ -85,10 +85,6 @@ function find_if(func, array) {
}
};
function HOP(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
};
function repeat_string(str, i) {
if (i <= 0) return "";
if (i == 1) return str;
@@ -107,16 +103,16 @@ function defaults(args, defs, croak) {
if (args === true)
args = {};
var ret = args || {};
if (croak) for (var i in ret) if (HOP(ret, i) && !HOP(defs, i))
if (croak) for (var i in ret) if (ret.hasOwnProperty(i) && !defs.hasOwnProperty(i))
throw new DefaultsError("`" + i + "` is not a supported option", defs);
for (var i in defs) if (HOP(defs, i)) {
ret[i] = (args && HOP(args, i)) ? args[i] : defs[i];
for (var i in defs) if (defs.hasOwnProperty(i)) {
ret[i] = (args && args.hasOwnProperty(i)) ? args[i] : defs[i];
}
return ret;
};
function merge(obj, ext) {
for (var i in ext) if (HOP(ext, i)) {
for (var i in ext) if (ext.hasOwnProperty(i)) {
obj[i] = ext[i];
}
return obj;
@@ -158,7 +154,7 @@ var MAP = (function(){
}
}
else {
for (i in a) if (HOP(a, i)) if (doit()) break;
for (i in a) if (a.hasOwnProperty(i)) if (doit()) break;
}
return top.concat(ret);
};