diff --git a/lib/OpenLayers/BaseTypes/Class.js b/lib/OpenLayers/BaseTypes/Class.js index 1e242f55bb..6f64d3f961 100644 --- a/lib/OpenLayers/BaseTypes/Class.js +++ b/lib/OpenLayers/BaseTypes/Class.js @@ -91,7 +91,7 @@ OpenLayers.Util.extend = function(destination, source) { destination = destination || {}; if (source) { for (var property in source) { - if (source.hasOwnProperty(property)) { + if (Object.prototype.hasOwnProperty.call(source, property)) { var value = source[property]; if (value !== undefined) { destination[property] = value; diff --git a/tests/Util.html b/tests/Util.html index 43db83c06d..2357b54e2c 100644 --- a/tests/Util.html +++ b/tests/Util.html @@ -1120,7 +1120,31 @@ t.eq(OpenLayers.Util.getFormattedLonLat(-181, "lon"), "179°00'00\"E", "crossing dateline from the west results in correct east coordinate"); t.eq(OpenLayers.Util.getFormattedLonLat(181, "lon"), "179°00'00\"W", "crossing dateline from the east results in correct west coordinate"); } - + + /** + * To test that we can safely call OpenLayers.Util.extend with an Event + * instance, we need to capture a real event. + */ + var loadEvent; + window.onload = function(evt) { + loadEvent = evt || window.event; + } + function test_extend_event(t) { + t.plan(2); + t.ok(loadEvent, "loadEvent recorded"); + var extended, err; + try { + extended = OpenLayers.Util.extend({foo: "bar"}, loadEvent); + } catch (e) { + err = e; + } + if (err) { + t.fail("Failed to extend with an event: " + err.message); + } else { + t.eq(extended && extended.foo, "bar", "extended with event"); + } + } +