/
githubmirror
/
immutable-js
Обзор
Документация
Войти
/
githubmirror
/
immutable-js
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v4.3.9
src/functional/set.js
31 строка
937 B
Julien Deniau
fix new proto key injection
04 мар 2026, 01:10
04 мар 2026, 01:10
94bcd3c
Код
Авторство
О чём код?
import { isImmutable } from '../predicates/isImmutable'; import hasOwnProperty from '../utils/hasOwnProperty'; import isDataStructure from '../utils/isDataStructure'; import { isProtoKey } from '../utils/protoInjection'; import shallowCopy from '../utils/shallowCopy'; export function set(collection, key, value) { if (isProtoKey(key)) { return collection; } if (!isDataStructure(collection)) { throw new TypeError( 'Cannot update non-data-structure value: ' + collection ); } if (isImmutable(collection)) { if (!collection.set) { throw new TypeError( 'Cannot update immutable value without .set() method: ' + collection ); } return collection.set(key, value); } if (hasOwnProperty.call(collection, key) && value === collection[key]) { return collection; } const collectionCopy = shallowCopy(collection); collectionCopy[key] = value; return collectionCopy; }