A batch request is a multi-part body. Therefore the response.body won't contain the full body but only one part. You will have loop over the entities collection of the request/response object to get the body one part at time. Here is similar example:
for (var i = 0; i < $.request.entities.length; ++i) {
content = $.request.entities[i].body.asArrayBuffer();
}
I see that you are trying to output your response.entities and getting an empty array, however. That's somewhat concerning. Still you might try iterating over the entities and getting body one entity at a time. I'm not sure they pre-load into JavaScript variable. I think they only load upon request to allow for better processing of large request/response objects. Remember the request/response objects actually exists within the XSEngine C-layer and is only materialized into the JavaScript VM when needed.