diff --git a/packages/ember-application/lib/system/resolver.js b/packages/ember-application/lib/system/resolver.js index 689d0afd1d8..979f4fbecdd 100644 --- a/packages/ember-application/lib/system/resolver.js +++ b/packages/ember-application/lib/system/resolver.js @@ -298,12 +298,12 @@ export default EmberObject.extend({ resolveTemplate(parsedName) { var templateName = parsedName.fullNameWithoutType.replace(/\./g, '/'); - if (Ember.TEMPLATES[templateName]) { + if (Ember.TEMPLATES.hasOwnProperty(templateName)) { return Ember.TEMPLATES[templateName]; } templateName = decamelize(templateName); - if (Ember.TEMPLATES[templateName]) { + if (Ember.TEMPLATES.hasOwnProperty(templateName)) { return Ember.TEMPLATES[templateName]; } }, diff --git a/packages/ember-routing/lib/system/router.js b/packages/ember-routing/lib/system/router.js index 52740d494f4..0d23bc58197 100644 --- a/packages/ember-routing/lib/system/router.js +++ b/packages/ember-routing/lib/system/router.js @@ -102,7 +102,7 @@ var EmberRouter = EmberObject.extend(Evented, { init() { this._activeViews = {}; - this._qpCache = {}; + this._qpCache = Object.create(null); this._resetQueuedQueryParameterChanges(); }, diff --git a/packages/ember/tests/routing/query_params_test.js b/packages/ember/tests/routing/query_params_test.js index 49a1a481d2e..28d274989ef 100644 --- a/packages/ember/tests/routing/query_params_test.js +++ b/packages/ember/tests/routing/query_params_test.js @@ -3079,3 +3079,28 @@ QUnit.test('warn user that routes query params configuration must be an Object, bootApplication(); }, 'You passed in `[{"commitBy":{"replace":true}}]` as the value for `queryParams` but `queryParams` cannot be an Array'); }); + +QUnit.test('handle routes names that class with Object.prototype properties', function() { + expect(1); + + Router.map(function() { + this.route('constructor'); + }); + + App.ConstructorRoute = Ember.Route.extend({ + queryParams: { + foo: { + defaultValue: '123' + } + } + }); + + bootApplication(); + + Ember.run(router, 'transitionTo', 'constructor', { queryParams: { foo: '999' } }); + + var controller = container.lookup('controller:constructor'); + equal(get(controller, 'foo'), '999'); +}); + +