Если вы в использовании библиотеки, попробуйте lodash's _.unset
. Этот пример является прямым из документов:
Удаляет свойство по пути объекта.
Примечание: этот метод мутирует объект.
var object = { 'a': [{ 'b': { 'c': 7 } }] };
_.unset(object, 'a[0].b.c');
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
_.unset(object, ['a', '0', 'b', 'c']);
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
В вашем случае, вы могли бы сделать:
var obj = { foo: 'FOO', bar: 'BAR', a: { b: 'B' } };
_.unset(obj, ['a', 'b']);
typeof obj.a.b === 'undefined'; // => true
Если вы хотите хотите, чтобы имитировать его с вашим собственным кодом, вы можете посмотреть на то, как они реализуют его on line 4155 of the source:
/**
* The base implementation of `_.unset`.
*
* @private
* @param {Object} object The object to modify.
* @param {Array|string} path The path of the property to unset.
* @returns {boolean} Returns `true` if the property is deleted, else `false`.
*/
function baseUnset(object, path) {
path = isKey(path, object) ? [path] : castPath(path);
object = parent(object, path);
var key = toKey(last(path));
return !(object != null && hasOwnProperty.call(object, key)) || delete object[key];
}
Вам нужно будет искать все функции, используемые внутри там.