(obj, path, setValue, fullExp)
| 12372 | ////////////////////////////////////////////////// |
| 12373 | |
| 12374 | function setter(obj, path, setValue, fullExp) { |
| 12375 | ensureSafeObject(obj, fullExp); |
| 12376 | |
| 12377 | var element = path.split('.'), key; |
| 12378 | for (var i = 0; element.length > 1; i++) { |
| 12379 | key = ensureSafeMemberName(element.shift(), fullExp); |
| 12380 | var propertyObj = ensureSafeObject(obj[key], fullExp); |
| 12381 | if (!propertyObj) { |
| 12382 | propertyObj = {}; |
| 12383 | obj[key] = propertyObj; |
| 12384 | } |
| 12385 | obj = propertyObj; |
| 12386 | } |
| 12387 | key = ensureSafeMemberName(element.shift(), fullExp); |
| 12388 | ensureSafeObject(obj[key], fullExp); |
| 12389 | obj[key] = setValue; |
| 12390 | return setValue; |
| 12391 | } |
| 12392 | |
| 12393 | var getterFnCacheDefault = createMap(); |
| 12394 | var getterFnCacheExpensive = createMap(); |
no test coverage detected