I was not aware of the data-last convention. Thanks! Makes a lot of sense.
My mental model of assign was backwards, and it took me a while to comprehend why their implementation would be data-last.
So, the data is the object that is being modified? And the idea is it lets you write stuff like this more easily:
const addStuffToObject = stuff -> object -> assign({ "some_stuff": stuff }, object);
const addWeirdStuff = addStuffToObject("weird stuff");
const weirdObj = addWeirdStuff({ "foo": "bar" });