From 85fefadcf7918388454de970b496d25d3898fd22 Mon Sep 17 00:00:00 2001 From: Lon Ingram Date: Wed, 4 Sep 2013 09:34:30 -0500 Subject: [PATCH] Use hasOwnProperty to check for bucket existence If a mapped observable has a value that is a property of `Object.prototype`, `findBucket` returns that property's value instead of a `simpleObjectLookup` instance. Fix #124 --- knockout.mapping.js | 2 +- spec/issues.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/knockout.mapping.js b/knockout.mapping.js index 2ac4a3d..1183377 100644 --- a/knockout.mapping.js +++ b/knockout.mapping.js @@ -799,7 +799,7 @@ } var bucket = buckets[bucketKey]; - if (bucket === undefined) { + if (!buckets.hasOwnProperty(bucketKey)) { bucket = new simpleObjectLookup(); buckets[bucketKey] = bucket; } diff --git a/spec/issues.js b/spec/issues.js index 3ac3ea8..61ff3c2 100644 --- a/spec/issues.js +++ b/spec/issues.js @@ -314,3 +314,10 @@ test('Issue #107', function () { equal(model.foo(), "baz"); }); + +//https://github.com/SteveSanderson/knockout.mapping/issues/124 +test('Issue #124', function () { + var model = ko.mapping.fromJS({ foo: 'constructor' }); + + equal(model.foo(), 'constructor'); +});