From fd8271396d9e0d2f2ca71f48ad3338924a0720fe Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Fri, 19 Feb 2010 02:08:34 -0800 Subject: [PATCH] Fix for accounting for non-Cappuccino libraries placing things on Object.prototype. Reviewed by me. --- Objective-J/CFBundle.js | 3 ++- Objective-J/EventDispatcher.js | 26 +++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Objective-J/CFBundle.js b/Objective-J/CFBundle.js index c8bbfde8a..a516c722e 100644 --- a/Objective-J/CFBundle.js +++ b/Objective-J/CFBundle.js @@ -464,7 +464,8 @@ function executeBundle(/*Bundle*/ aBundle, /*Function*/ aCallback) var children = staticResource.children(); for (var name in children) - staticResources.push(children[name]); + if (hasOwnProperty.call(children, name)) + staticResources.push(children[name]); } } diff --git a/Objective-J/EventDispatcher.js b/Objective-J/EventDispatcher.js index 317e35e22..10817f3dc 100644 --- a/Objective-J/EventDispatcher.js +++ b/Objective-J/EventDispatcher.js @@ -12,13 +12,15 @@ function EventDispatcher(/*Object*/ anOwner) EventDispatcher.prototype.addEventListener = function(/*String*/ anEventName, /*Function*/ anEventListener) { - var eventListenersForEventName = this._eventListenersForEventNames[anEventName]; + var eventListenersForEventNames = this._eventListenersForEventNames; - if (!eventListenersForEventName) + if (!hasOwnProperty.call(this._eventListenersForEventNames, anEventName)) { - eventListenersForEventName = []; - this._eventListenersForEventNames[anEventName] = eventListenersForEventName; + var eventListenersForEventName = []; + eventListenersForEventNames[anEventName] = eventListenersForEventName; } + else + var eventListenersForEventName = eventListenersForEventNames[anEventName]; var index = eventListenersForEventName.length; @@ -31,12 +33,13 @@ EventDispatcher.prototype.addEventListener = function(/*String*/ anEventName, /* EventDispatcher.prototype.removeEventListener = function(/*String*/ anEventName, /*Function*/ anEventListener) { - var eventListenersForEventName = this._eventListenersForEventNames[anEventName]; + var eventListenersForEventNames = this._eventListenersForEventNames; - if (!eventListenersForEventName) + if (!hasOwnProperty.call(eventListenersForEventNames, anEventName)) return; - var index = eventListenersForEventName.length; + var eventListenersForEventName = eventListenersForEventNames[anEventName]. + index = eventListenersForEventName.length; while (index--) if (eventListenersForEventName[index] === anEventListener) @@ -46,13 +49,14 @@ EventDispatcher.prototype.removeEventListener = function(/*String*/ anEventName, EventDispatcher.prototype.dispatchEvent = function(/*Event*/ anEvent) { var type = anEvent.type, - eventListenersForEventName = this._eventListenersForEventNames[type]; + eventListenersForEventNames = this._eventListenersForEventNames; - if (eventListenersForEventName) + if (hasOwnProperty.call(eventListenersForEventNames, type)) { - var index = 0, + var eventListenersForEventName = this._eventListenersForEventNames[type], + index = 0, count = eventListenersForEventName.length; - + for (; index < count; ++index) eventListenersForEventName[index](anEvent); }