The problem isn't which JavaScript API you pick here, the issue is that the data is distributed throughout various sub-sites.
You didn't mention which version of SharePoint you're using, but if you're using 2013 (or later) or SharePoint Online I would suggest you try accessing the search service since it will be able to easily query across different sites (there are many available techniques but you can use JSOM or REST) Here is a specific example using the REST API and an answer to another question with some more information on the same technique.
There are also some other techniques for fetching data from across different site collections that you might consider, but many of them require a lot more effort than tapping into the search service.
Some points of clarification:
It's possible to navigate to data in many different sub-sites using the JavaScript Client Object Model.
var myCtx = SP.ClientContext.get_current();
var root = myCtx.get_site().get_rootWeb(); // may need to do this if in a sub site
var webs = root.get_webs(); // fetch a reference to all the sub webs
myCtx.load(webs, "Include(Title)");
myCtx.executeQueryAsync(function() {
// success -- log all of the web titles to the console
webs.get_data().map(function(item) { console.log(item.get_title()) });
// access a specific list in a sub web like...
var subWebList = webs.get_item(1).get_lists().getByTitle("ListInSubWeb1");
// do other work with the list like normal
...
// navigate to other subweb lists...
var subWebList2 = webs.get_item(2).get_lists().getByTitle("AnotherList");
// do other stuff...
}, function() {
// fail
});
The issue with this approach for what you're talking about is that you would need to know ahead of time what lists and what fields you were after or you would have to loop through everything and check. As far as I know, there isn't an easy way in the JSOM or the REST API to directly query for all the items of a specific content type from a particular site without using the search API. I see you have another question about enumerating content types which would allow you to check any lists or libraries manually though.