use Object.keys instead of Object.hasOwnProperty where possible

This commit is contained in:
Jeff Williams 2013-05-02 20:06:04 -07:00
parent e0ffe52411
commit f97803ad69
8 changed files with 80 additions and 90 deletions

View File

@ -2,21 +2,21 @@ var hasOwnProp = Object.prototype.hasOwnProperty;
function mapDependencies(index) {
var doclets, doc, len, dependencies = {};
for (var name in index) {
if ( hasOwnProp.call(index, name) ) {
doclets = index[name];
for (var i=0, ii=doclets.length; i<ii; ++i) {
doc = doclets[i];
if (doc.kind === "class" || doc.kind === "external") {
dependencies[name] = {};
len = doc.augments && doc.augments.length || 0;
for (var j=0; j<len; ++j) {
dependencies[name][doc.augments[j]] = true;
}
Object.keys(index).forEach(function(name) {
doclets = index[name];
for (var i = 0, ii = doclets.length; i < ii; ++i) {
doc = doclets[i];
if (doc.kind === "class" || doc.kind === "external") {
dependencies[name] = {};
len = doc.augments && doc.augments.length || 0;
for (var j = 0; j < len; ++j) {
dependencies[name][doc.augments[j]] = true;
}
}
}
}
});
return dependencies;
}
@ -27,24 +27,28 @@ function Sorter(dependencies) {
}
Sorter.prototype.visit = function(key) {
var self = this;
if (!(key in this.visited)) {
this.visited[key] = true;
for (var path in this.dependencies[key]) {
if (hasOwnProp.call(this.dependencies[key], path)) {
this.visit(path);
}
if (this.dependencies[key]) {
Object.keys(this.dependencies[key]).forEach(function(path) {
self.visit(path);
});
}
this.sorted.push(key);
}
};
Sorter.prototype.sort = function() {
for (var key in this.dependencies) {
if (hasOwnProp.call(this.dependencies, key)) {
this.visit(key);
}
}
var self = this;
Object.keys(this.dependencies).forEach(function(key) {
self.visit(key);
});
return this.sorted;
};
@ -55,7 +59,7 @@ function sort(dependencies) {
function getMembers(longname, docs) {
var candidate, members = [];
for (var i=0, ii=docs.length; i<ii; ++i) {
for (var i = 0, ii = docs.length; i < ii; ++i) {
candidate = docs[i];
if (candidate.memberof === longname && candidate.scope === "instance") {
members.push(candidate);

View File

@ -8,20 +8,16 @@
@module jsdoc/config
*/
var hasOwnProp = Object.prototype.hasOwnProperty;
function mergeRecurse(target, source) {
for (var p in source) {
if ( hasOwnProp.call(source, p) ) {
if ( source[p].constructor === Object ) {
if ( !target[p] ) { target[p] = {}; }
mergeRecurse(target[p], source[p]);
}
else {
target[p] = source[p];
}
Object.keys(source).forEach(function(p) {
if ( source[p].constructor === Object ) {
if ( !target[p] ) { target[p] = {}; }
mergeRecurse(target[p], source[p]);
}
}
else {
target[p] = source[p];
}
});
return target;
}

View File

@ -43,11 +43,9 @@ function fixTypes(item) {
result[i] = fixTypes(result[i]);
}
} else if (typeof result === 'object') {
for (var prop in result) {
if ( hasOwnProp.call(result, prop) ) {
result[prop] = fixTypes(result[prop]);
}
}
Object.keys(result).forEach(function(prop) {
result[prop] = fixTypes(result[prop]);
});
} else {
result = castTypes(result);
}
@ -58,11 +56,9 @@ function fixTypes(item) {
function parseQuery(str) {
var result = querystring.parse(str);
for (var prop in result) {
if ( hasOwnProp.call(result, prop) ) {
result[prop] = fixTypes(result[prop]);
}
}
Object.keys(result).forEach(function(prop) {
result[prop] = fixTypes(result[prop]);
});
return result;
}

View File

@ -7,8 +7,6 @@
var error = require('jsdoc/util/error');
var path = require('jsdoc/path');
var hasOwnProp = Object.prototype.hasOwnProperty;
exports.installPlugins = function(plugins, p) {
var dictionary = require('jsdoc/tag/dictionary');
var parser = p;
@ -28,11 +26,9 @@ exports.installPlugins = function(plugins, p) {
// allow user-defined plugins to...
//...register event handlers
if (plugin.handlers) {
for (eventName in plugin.handlers) {
if ( hasOwnProp.call(plugin.handlers, eventName) ) {
parser.on(eventName, plugin.handlers[eventName]);
}
}
Object.keys(plugin.handlers).forEach(function(eventName) {
parser.on(eventName, plugin.handlers[eventName]);
});
}
//...define tags

View File

@ -14,15 +14,14 @@ var dictionary;
/** @private */
function TagDefinition(title, etc) {
var self = this;
etc = etc || {};
this.title = dictionary.normalise(title);
for (var p in etc) {
if ( hasOwnProp.call(etc, p) ) {
this[p] = etc[p];
}
}
Object.keys(etc).forEach(function(p) {
self[p] = etc[p];
});
}
/** @private */

View File

@ -4,17 +4,17 @@
*/
var doop = exports.doop = function(o) {
var clone,
hasOwnProp = Object.prototype.hasOwnProperty,
prop;
if (o instanceof Object && o.constructor != Function) {
clone = o instanceof Array ? [] : {};
for (prop in o){
if ( hasOwnProp.call(o, prop) ) {
clone[prop] = (o[prop] instanceof Object)? doop(o[prop]) : o[prop];
}
}
Object.keys(o).forEach(function(prop) {
clone[prop] = (o[prop] instanceof Object) ? doop(o[prop]) : o[prop];
});
return clone;
}
return o;
};

View File

@ -7,6 +7,7 @@
*/
var conf = env.conf.markdown;
var defaultTags = [ "classdesc", "description", "params", "properties", "returns", "see"];
var hasOwnProp = Object.prototype.hasOwnProperty;
var parse = require('jsdoc/util/markdown').getParser();
var tags = [];
var excludeTags = [];
@ -19,7 +20,7 @@ var excludeTags = [];
*/
function process(doclet) {
tags.forEach(function(tag) {
if (!doclet.hasOwnProperty(tag)) {
if ( !hasOwnProp.call(doclet, tag) ) {
return;
}

View File

@ -503,34 +503,32 @@ exports.publish = function(taffyData, opts, tutorials) {
var mixins = taffy(members.mixins);
var externals = taffy(members.externals);
for (var longname in helper.longnameToUrl) {
if ( hasOwnProp.call(helper.longnameToUrl, longname) ) {
var myClasses = helper.find(classes, {longname: longname});
if (myClasses.length) {
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
}
var myModules = helper.find(modules, {longname: longname});
if (myModules.length) {
generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
}
var myNamespaces = helper.find(namespaces, {longname: longname});
if (myNamespaces.length) {
generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
}
var myMixins = helper.find(mixins, {longname: longname});
if (myMixins.length) {
generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
}
var myExternals = helper.find(externals, {longname: longname});
if (myExternals.length) {
generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]);
}
Object.keys(helper.longnameToUrl).forEach(function(longname) {
var myClasses = helper.find(classes, {longname: longname});
if (myClasses.length) {
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
}
}
var myModules = helper.find(modules, {longname: longname});
if (myModules.length) {
generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
}
var myNamespaces = helper.find(namespaces, {longname: longname});
if (myNamespaces.length) {
generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
}
var myMixins = helper.find(mixins, {longname: longname});
if (myMixins.length) {
generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
}
var myExternals = helper.find(externals, {longname: longname});
if (myExternals.length) {
generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]);
}
});
// TODO: move the tutorial functions to templateHelper.js
function generateTutorial(title, tutorial, filename) {