Home Reference Source

ts_temp/function/updatePropertyValue.js

import curryN from './curryN';
/**
 * A function to change value by property name in object.
 *
 * @deprecated use propSet instead
 * @param {String} propertyName property name of target object
 * @param {Any} propertyValue new value
 * @param {Object} obj a target object
 * @return {Object} changed object with new value
 * @example
 *      var fn = () => {};
 *      var updateName = updatePropertyValue('name', 'newFn');
 *
 *      fn.name //=> 'fn'
 *
 *      var newFn = updateName(fn);
 *
 *      newFn.name //=> 'newFn'
 *      fn.name //=> 'newFn'
 */
export default curryN(2, (propertyName, propertyValue, obj) => {
    const descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
    descriptor.value = propertyValue;
    Object.defineProperty(obj, propertyName, descriptor);
    return obj;
});