Я думаю, что это делает дизайн простым.Узел может существовать изолированно, но более интересным случаем является дерево DOM.При removeChild
удаляемый узел должен быть дочерним по отношению к узлу, на котором был вызван метод.
Получение списка всех детей и сравнение каждого из них вручную - не такая уж и дорогая операция.Однако поиск всех потомков по узлу, который должен быть удален, действительно дорог.
Редактировать : В ответ на ваше обновление браузер просто реализует спецификацию DOM , который определяет метод removeChild
для Node
.Спецификация, по моему мнению , должна быть однозначной и свободной от предположений.Это похоже на Внедрение зависимостей с этой точки зрения.Спецификация DOM Core моделирует дерево, используя строительные блоки, такие как Node, Element и т. Д. Добавление одного метода, такого как removeNode
, где-то в этих строительных блоках означает, что метод неявно знает о своей среде - что он may
будет дочернимнекоторого узла, и он должен быть удален оттуда, если он есть.
Задача w3 - создать очень надежный API, который делает большинство вещей возможным.Они не должны беспокоиться о синтаксическом сахаре, так как он всегда может быть написан вокруг нативных API, если они хорошо написаны.