kiedy wywołamy metodę apply z this ustawionym na Object
Nie tu jest problem. To nie ma nic do rzeczy. I tak by this byłby ustawiony na Object, nawet jakbyś napisał Object.assign(.........), czyli wywołałbyś metodę obiektu Object
.
(swoją drogą nie wiem, czy to ma znaczenie w tym przypadku, bo Object.assign.apply(null, ..........
również działa).
No ale nie tu jest problem w tym przypadku.
puste obiekty się usuwają
Nie usuwają się. Napisałeś coś, co efektywnie wygląda mniej więcej tak:
options = Object.assign({}, {cz:"true"}, {a: "A"}, {b: "B"}, {c: "C"});
Czyli ten pusty obiekt to obiekt docelowy, do którego będzie kopiować kolejne właściwości. I on się nie usuwa, a zwraca ci ten obiekt właśnie. Weź zobacz:
var sources = [{a: "A"}, {b: "B"}, {c: "C"}];
var destination = {};
var options = Object.assign.apply(Object, [destination, {cz:"true"}].concat(sources));
console.log(destination === options); // true