Javascript ES6多重继承?
有人能解释一下以下有效ES6代码的含义吗Javascript ES6多重继承?,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,有人能解释一下以下有效ES6代码的含义吗 'use strict'; class first { constructor() { } } class second { constructor() { } } class third extends (first, second) { constructor() { super(); } } 据我所知,JavaScript中没有多重继承,但是示例中显示的语法没有抛出任何错误(在
'use strict';
class first {
constructor() {
}
}
class second {
constructor() {
}
}
class third extends (first, second) {
constructor() {
super();
}
}
据我所知,JavaScript中没有多重继承,但是示例中显示的语法没有抛出任何错误(在Node.js 4.3.0中),并且它可以工作,…-我想了解的是什么,或者它到底在那里做什么
另外,我注意到,如果我注释掉
super()
调用,那么代码开始抛出错误ReferenceError:这是未定义的这只是一个令人困惑的例子
它不会抛出错误,因为它的语法是有效的,但是它在您期望的意义上也不起作用<代码>第三个
将仅从第二个继承
我们可以通过编译为ES5语法来验证这种情况,以检查它是否不影响类定义
var third = (function (_ref) {
_inherits(third, _ref);
function third() {
_classCallCheck(this, third);
_get(Object.getPrototypeOf(third.prototype), 'constructor', this).call(this);
}
return third;
})((first, second));
计算(第一个,第二个)
的结果作为\u ref
传递,然后第三个\u继承它。这只是一个令人困惑的例子
它不会抛出错误,因为它的语法是有效的,但是它在您期望的意义上也不起作用<代码>第三个
将仅从第二个继承
我们可以通过编译为ES5语法来验证这种情况,以检查它是否不影响类定义
var third = (function (_ref) {
_inherits(third, _ref);
function third() {
_classCallCheck(this, third);
_get(Object.getPrototypeOf(third.prototype), 'constructor', this).call(this);
}
return third;
})((first, second));
计算(第一个,第二个)
的结果作为\u ref
传递,然后第三个\u继承它。@Tushar该问题是关于巴贝尔的,这是关于ES6的。(第一个,第二个)
是逗号运算符,计算结果是第二个<代码>第一个
被扔掉了。这个问题与巴贝尔无关。Babel只是一个工具/库,在浏览器不支持ES6的早期使用。@torazaburo如果我们删除括号并只使用第一、第二个,Node.js将拒绝此类代码,这纯粹是Babel语法。任何ES6处理器都会拒绝没有paren的代码。至于您最初的问题,只要看一下Babel生成的ES5代码就应该清楚了。@Tushar那个问题是关于Babel的,这个问题是关于ES6的。(第一,第二)
是逗号运算符,计算结果是第二
<代码>第一个
被扔掉了。这个问题与巴贝尔无关。Babel只是一个工具/库,在浏览器不支持ES6的早期使用。@torazaburo如果我们删除括号并只使用第一、第二个,Node.js将拒绝此类代码,这纯粹是Babel语法。任何ES6处理器都会拒绝没有paren的代码。至于你最初的问题,只要看看Babel生成的ES5代码就应该清楚了。你确定吗?如果我们注释掉super()
,那么代码开始抛出错误:ReferenceError:这是未定义的
。但是看起来只有第二个是继承的。是的,我确定。看看编译后的ES5版本。这开始有意义了,尽管从语法的角度看,这确实令人困惑。它并不比逗号运算符的任何其他用法更令人困惑。你确定吗?如果我们注释掉super()
,那么代码开始抛出错误:ReferenceError:这是未定义的
。但是看起来只有第二个是继承的。是的,我确定。看看编译后的ES5版本。这开始有意义了,尽管从语法的角度来看,这确实令人困惑。它并不比逗号运算符的任何其他用法更令人困惑。