www

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

commit d02fe6d9ab87f6bb888c8f00ac433da414643222
parent 6586d309444fd7661d9e7693884a87cbeeb31344
Author: Simon Kornblith <simon@simonster.com>
Date:   Wed,  4 Jul 2012 18:22:45 -0400

Include speed of Fx5DOMWrapper

Diffstat:
Mchrome/content/zotero/xpcom/translation/translate_firefox.js | 16+++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/chrome/content/zotero/xpcom/translation/translate_firefox.js b/chrome/content/zotero/xpcom/translation/translate_firefox.js @@ -96,19 +96,19 @@ Zotero.Translate.SandboxManager.Fx5DOMWrapper = function(obj, parent) { return null; } - var type = typeof obj; - if(type === "function") { + if(typeof obj === "function") { var me = this; var val = function() { var nArgs = arguments.length; var args = new Array(nArgs); for(var i=0; i<nArgs; i++) { - args[i] = (arguments[i] instanceof Object && arguments[i].__wrappedDOMObject - ? arguments[i].__wrappedDOMObject : arguments[i]); + var arg = arguments[i]; + args[i] = ((typeof arg === "object" || typeof arg === "function") + && "__wrappedDOMObject" in arg ? arg.__wrappedDOMObject : arg); } return Zotero.Translate.SandboxManager.Fx5DOMWrapper(obj.apply(parent ? parent : null, args)); } - } else if(type === "object") { + } else if(typeof obj === "object") { if(val instanceof Array) { var val = []; } else { @@ -121,10 +121,12 @@ Zotero.Translate.SandboxManager.Fx5DOMWrapper = function(obj, parent) { val.__wrappedDOMObject = obj; val.__exposedProps__ = {}; for(var prop in obj) { - let localProp = prop; + let localProp = prop, + cachedWrapper; val.__exposedProps__[localProp] = "r"; val.__defineGetter__(localProp, function() { - return Zotero.Translate.SandboxManager.Fx5DOMWrapper(obj[localProp], obj); + if(!cachedWrapper) cachedWrapper = Zotero.Translate.SandboxManager.Fx5DOMWrapper(obj[localProp], obj); + return cachedWrapper; }); }