Array.prototype.join doesn't have to be called on an Array, just an Object with a length property (tested in Google Chrome, FireFox, IE10)
function makeStr(len, char) {
return Array.prototype.join.call({length: (len || -1) + 1}, char || 'x');
}
makeStr(5); // "xxxxx"
This lets you benefit from native function making the string, without the overhead of a huge array.