(obj, locals, path, setValue, fullExp)
| 12552 | ////////////////////////////////////////////////// |
| 12553 | |
| 12554 | function setter(obj, locals, path, setValue, fullExp) { |
| 12555 | ensureSafeObject(obj, fullExp); |
| 12556 | ensureSafeObject(locals, fullExp); |
| 12557 | |
| 12558 | var element = path.split('.'), key; |
| 12559 | for (var i = 0; element.length > 1; i++) { |
| 12560 | key = ensureSafeMemberName(element.shift(), fullExp); |
| 12561 | var propertyObj = (i === 0 && locals && locals[key]) || obj[key]; |
| 12562 | if (!propertyObj) { |
| 12563 | propertyObj = {}; |
| 12564 | obj[key] = propertyObj; |
| 12565 | } |
| 12566 | obj = ensureSafeObject(propertyObj, fullExp); |
| 12567 | } |
| 12568 | key = ensureSafeMemberName(element.shift(), fullExp); |
| 12569 | ensureSafeObject(obj[key], fullExp); |
| 12570 | obj[key] = setValue; |
| 12571 | return setValue; |
| 12572 | } |
| 12573 | |
| 12574 | var getterFnCacheDefault = createMap(); |
| 12575 | var getterFnCacheExpensive = createMap(); |
no test coverage detected