www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 31f3733cbfa8ede0635f232f7eba880d857c7565
parent dc2d417c3d841da25e49bd16bff2eccac7580618
Author: Simon Kornblith <simon@simonster.com>
Date:   Mon,  5 Sep 2011 01:55:54 +0000

Addresses #597, Don't iterate Array with for...in


Diffstat:
Mchrome/content/zotero/xpcom/connector/translate_item.js | 2+-
Mchrome/content/zotero/xpcom/date.js | 2+-
Mchrome/content/zotero/xpcom/translation/translate.js | 10+++++-----
Mchrome/content/zotero/xpcom/utilities.js | 6++++--
4 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/chrome/content/zotero/xpcom/connector/translate_item.js b/chrome/content/zotero/xpcom/connector/translate_item.js @@ -57,7 +57,7 @@ Zotero.Translate.ItemSaver.prototype = { */ "_saveToServer":function(items, callback) { var newItems = []; - for(var i in items) { + for(var i=0, n=items.length; i<n; i++) { newItems.push(Zotero.Utilities.itemToServerJSON(items[i])); } diff --git a/chrome/content/zotero/xpcom/date.js b/chrome/content/zotero/xpcom/date.js @@ -344,7 +344,7 @@ Zotero.Date = new function(){ if (Zotero.locale != 'en-US') { Zotero.Date.getMonths(); months = months.concat(_months['short']).concat(_months['long']); - for(var i in months) months[i] = months[i].toLowerCase(); + for(var i=0, n=months.length; i<n; i++) months[i] = months[i].toLowerCase(); } if(!_monthRe) { diff --git a/chrome/content/zotero/xpcom/translation/translate.js b/chrome/content/zotero/xpcom/translation/translate.js @@ -825,7 +825,7 @@ Zotero.Translate.Base.prototype = { args.push(arguments[i]); } - for(var i in this._handlers[type]) { + for(var i=0, n=this._handlers[type].length; i<n; i++) { Zotero.debug("Translate: Running handler "+i+" for "+type, 5); try { returnValue = this._handlers[type][i].apply(null, args); @@ -891,7 +891,7 @@ Zotero.Translate.Base.prototype = { this._properToProxyFunctions = properToProxyFunctions ? properToProxyFunctions : null; this._waitingForRPC = false; - for(var i in allPotentialTranslators) { + for(var i=0, n=allPotentialTranslators.length; i<n; i++) { var translator = allPotentialTranslators[i]; if(translator.runMode === Zotero.Translator.RUN_MODE_IN_BROWSER) { this._potentialTranslators.push(translator); @@ -1202,7 +1202,7 @@ Zotero.Translate.Base.prototype = { "Zotero.Item = function (itemType) {"+ "const createArrays = "+createArrays+";"+ "this.itemType = itemType;"+ - "for(var i in createArrays) {"+ + "for(var i=0, n=createArrays.length; i<n; i++) {"+ "this[createArrays[i]] = [];"+ "}"+ "};"; @@ -1454,7 +1454,7 @@ Zotero.Translate.Web.prototype._translateRPCComplete = function(obj, failureCode ); } else { // if we don't have to select items, continue - for(var i in obj.items) { + for(var i=0, n=obj.items.length; i<n; i++) { this._runHandler("itemDone", null, obj.items[i]); } this.newItems = obj.items; @@ -1815,7 +1815,7 @@ Zotero.Translate.Search.prototype.setTranslator = function(translator) { // accept a list of objects this.translator = []; - for(var i in translator) { + for(var i=0, n=translator.length; i<n; i++) { this.translator.push(translator[i]); } return true; diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js @@ -719,6 +719,8 @@ Zotero.Utilities = { "deepCopy":function(obj) { var obj2 = (obj instanceof Array ? [] : {}); for(var i in obj) { + if(!obj.hasOwnProperty(i)) continue; + if(typeof obj[i] === "object") { obj2[i] = Zotero.Utilities.deepCopy(obj[i]); } else { @@ -813,7 +815,7 @@ Zotero.Utilities = { if(!(elements instanceof Array)) elements = [elements]; var results = []; - for(var i in elements) { + for(var i=0, n=elements.length; i<n; i++) { var element = elements[i]; // Firefox 5 hack, so we will preserve Fx5DOMWrappers @@ -861,7 +863,7 @@ Zotero.Utilities = { if(!elements.length) return null; var strings = new Array(elements.length); - for(var i in elements) { + for(var i=0, n=elements.length; i<n; i++) { strings[i] = elements[i].textContent; }