JavaScript new this.constructor();元素列表后面的=> SyntaxError:missing]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript new this.constructor();元素列表后面的=> SyntaxError:missing],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2020字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript new this.constructor();元素列表后面的=> SyntaxError:missing]](/upload/InfoBanner/zyjiaocheng/797/09513b4ff5fd472fba11c8ff190578be.jpg)
我有一些课程:
class Sample{
static createSelf() {
return new this.constructor(1, 2);
}
}
class AnotherClass extends Sample {
constructor(a, b) {
this.c = a+b;
}
}
ac = AnotherClass.createSelf();
我该怎么做呢?
这个具体的例子给了我SyntaxError:缺少形式参数,虽然在我的原始代码(500行)中,当我有新的this.constructor()时,我得到了SyntaxError:missing],元素列表指向第一行(形式参数错误)也指向第1行).我知道这是因为这一行,因为当我用普通的类名替换它时,它可以工作.没有数组初始化关闭.错误不可能意味着:
There is an error with the array initializer syntax somewhere. Likely there is a closing bracket (“]”) or a comma (“,”) missing.
从
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Missing_bracket_after_list
UPDATE
原始代码:
class Participant {
constructor(origin, destination, number, startDate, endDate) {
...
}
static restore(save) {
const participant = new this.constructor(
new Marker(save.originLocation, this.getMarkerOptions(true, save.isDriver, save.number)).addTo(map),
new Marker(save.destinationLocation, this.getMarkerOptions(false, save.isDriver, save.number)).addTo(map),
save.number,
save.startDate,
save.endDate
);
return participant;
};
}
class Driver extends Participant {}
d = Driver.restore(saveObject);
解决方法:
如果错误指向第一行,则语法错误在您在此处发布的代码之前.
原来这个错误的原因是this.constructor引用了Function,它将评估作为代码传递给它的一个参数.由于您没有将JavaScript代码传递给它,因此您会收到语法错误.
示例(打开浏览器的控制台):
new Function({});
但是,您在此处发布的代码也存在两个问题.
这个内部静态方法
这个值取决于函数的调用方式.静态方法被称为构造函数的方法,因此这指的是构造函数.在您的示例中,使用AnotherClass.createSelf();,这引用了AnotherClass.因此this.constructor引用Function.我不认为这就是你想要的.我想你想要的
class Sample{
static createSelf() {
return new this(1, 2);
}
}
看起来你认为这会引用一个类的实例,但它怎么可能呢?你还没有创建一个.
这个内部构造函数
当一个类扩展另一个类时,你总是必须在构造函数中调用super()才能访问它:
class AnotherClass extends Sample {
constructor(a, b) {
super();
this.c = a+b;
}
}
内容总结
以上是互联网集市为您收集整理的JavaScript new this.constructor();元素列表后面的=> SyntaxError:missing]全部内容,希望文章能够帮你解决JavaScript new this.constructor();元素列表后面的=> SyntaxError:missing]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。