29 lines
575 B
JavaScript

class Joiner {
constructor(string) {
this.string = string;
}
join(...items) {
return items.join(this.string);
}
static join(string, ...items) {
var joiner = new this(string);
// TODO: use spread params here
return joiner.join.apply(joiner, items);
}
}
class ArrayLike {
constructor(...items) {
items.forEach(function(item, i) {
this[i] = item;
}.bind(this));
this.length = items.length;
}
}
var joiner = new Joiner(' & ');
expect(joiner.join(4, 5, 6)).toBe('4 & 5 & 6');
expect(new ArrayLike('a', 'b')[1]).toBe('b');