是否可以在ES6中扩展类而不用调用super
方法来调用父类?
编辑:这个问题可能会引起误解。 这是我们必须打电话的标准,super()
还是我遗漏了一些东西?
例如:
class Character {
constructor(){
console.log('invoke character');
}
}
class Hero extends Character{
constructor(){
super(); // exception thrown here when not called
console.log('invoke hero');
}
}
var hero = new Hero();
当我不调用super()
派生类时,我遇到了范围问题->this is not defined
我正在v2.3.0中使用iojs –harmony运行它
ES2015(ES6)类的规则基本上可以归结为:
this
只有在super
被调用之前才能使用。super
是子类,否则必须调用,否则它们必须显式返回某个对象以代替未初始化的对象。这归结为ES2015规范的两个重要部分。
8.1.1.3.4节定义了决定this
功能的逻辑。类的重要部分是有可能this
处于一种"uninitialized"
状态,当处于这种状态时,尝试使用this
将引发异常。
节9.2.2,[[Construct]]
,它定义的通过被称为功能的行为new
或super
。调用基类构造函数时,this
在的步骤#8进行了初始化[[Construct]]
,但对于所有其他情况,this
都未初始化。在构造结束时,GetThisBinding
将调用,因此,如果super
尚未调用(因此初始化this
),或者未返回显式替换对象,则构造函数调用的最后一行将引发异常。
是否可以在ES6中扩展类而不调用方法来调用父类? 编辑:这个问题可能有误导性。这是我们必须调用的标准,还是我遗漏了什么? 例如: 当我不对派生类调用时,我遇到了一个作用域问题- 我用iojs在v2.3.0中运行这个
这是我现在面临的问题。我有一个类,假设 ,这个类定义了一个名为 的方法,该方法返回一个 实例。类 在 内部定义,并被声明为。我想做的是定义一个扩展的类,但我也我自己的功能(方法,属性等)来扩展。我也希望返回。 问题是< code>Bar是最终的。下面是我想做的一个例子: 我想做的是: 我怎样才能做到这一点? [编辑]我正在为我的问题添加更多详细信息。我实际上正在为 Jenkins 开发一个插件,搜
问题内容: 我想在Firefox扩展中使用jQuery,我将库导入到xul文件中,如下所示: 但是xul文件中无法识别$()函数,jQuery()也无法识别。 我还尝试过将“ content.document”对象(该对象反映“ document”对象)作为上下文参数传递给jQuery函数,如下所示: 但仍然无法正常工作,以前有人遇到过这个问题吗? 问题答案: 我使用以下内容: 这是一个
我正在尝试做的是创建一个chrome扩展,创建新的,嵌套的,书签文件夹,使用承诺。 执行此操作的函数是chrome.bookmarks.create()。但是我不能只循环这个函数,因为chrome.bookmarks.create是异步的。我需要等待,直到文件夹创建,并获得它的新ID,然后继续它的子级。 承诺似乎是要走的路。不幸的是,我找不到一个使用异步调用和自己的回调(如chrome.bookm
我在React中测试ES6语法,并编写如下组件:
我已经创建了一个数据类 如何正确重写/扩展自定义DataClass的toString方法?