Javascript 实例化不带'的类;新';

Javascript 实例化不带'的类;新';,javascript,arrays,events,Javascript,Arrays,Events,尝试为数组创建一个包装器类,该类使用事件侦听器对其进行增强。下面是其用法的一个示例: new Stack(1, 2, 3).on('push', function (length) { console.log('Length: ' + length + '.'); }).push(4, 5, 6); 这是我的代码(): 我希望能够实例化堆栈,而无需使用新建,通常,我会这样做: if (!(this instanceof Stack)) { return new Stack(argume

尝试为
数组
创建一个包装器类,该类使用事件侦听器对其进行增强。下面是其用法的一个示例:

new Stack(1, 2, 3).on('push', function (length) {
  console.log('Length: ' + length + '.');
}).push(4, 5, 6);
这是我的代码():

我希望能够实例化
堆栈
,而无需使用
新建
,通常,我会这样做:

if (!(this instanceof Stack)) {
  return new Stack(arguments);
}
但它在这里不起作用,因为我基本上是将
参数
(一个psuedo数组)作为第一个参数传递给<代码>参数


如何使其不使用
new
调用堆栈?

您可以使用
对象。创建
来创建对象,然后使用
.apply()
来应用参数

if (!(this instanceof Stack)) {
  var t = Object.create(Stack.prototype);
  Stack.apply(t, arguments);
  return t
}
我相信ES6允许使用spread操作符传递带有
new
的参数集合,但这将涵盖传统浏览器

if (!(this instanceof Stack)) {
  var t = Object.create(Stack.prototype);
  Stack.apply(t, arguments);
  return t
}