当我尝试在Node.Js上执行此代码时失败。我已经为每个人创建了完整的代码,能够看到真实的结果。
这是课程结构:
FILE printlog.js
const echo = require( 'node-echo' );
class printlog
{
p (msg) { echo(msg) }
}
exports.printlog = printlog;
档案B.js
var { printlog } = require('./printlog.js')
class B extends printlog
{
constructor() {
super()
}
a_works(pos,elem) {
super.p(pos + ' - ' + elem)
}
a_fail(a_passed) {
if ( Array.isArray(a_passed) )
a_passed.forEach( function(elem, pos, array)
{
super.p(pos + ' - ' + elem ) // fail
})
}
}
var c = new B()
var arr = [2000, 2001, 2003,2039, 2040]
c.a_works(10,3) // works
c.a_fail(arr) // fail
节点Js版本:
node -v
v8.6.0
节点命令
node B.js
这是错误:
/B.js:25
super.p(pos + ' - ' + elem )
^^^^^
SyntaxError: 'super' keyword unexpected here
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:588:28)
at Object.Module._extensions..js (module.js:635:10)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Function.Module.runMain (module.js:665:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:607:3
感谢。
答案 0 :(得分:2)
我测试了代码只需更改echo()
- >到console.log()
它的作品
class printlog
{
p (msg) { console.log(msg) }
}
class B extends printlog
{
constructor() {
super()
}
a(pos,elem) {
super.p(pos + ' - ' + elem)
}
}
const bb = new B();
bb.a('pos', 'sss');
答案 1 :(得分:0)
如果没有您的所有代码,很难猜出它有什么问题。我假设你的类构造函数,你声明像this.p =''。请提供您的代码。
答案 2 :(得分:0)
问题与继承或其他OOP问题无关。
失败的是迭代数组的方法,所以似乎使用forEach我们无法获得其他类方法(超级,这个)
如果我们通过以下方式更改bucle:
for (var i = 0; i < a_passed.length; i+=1)
代码正常运行。
完整代码:
档案B.js
var { printlog } = require('./printlog.js')
class B extends printlog
{
constructor() {
super()
}
a_works(pos,elem) {
super.p(pos + ' - ' + elem)
}
a_dont_fail(a_passed) {
if ( Array.isArray(a_passed) )
for (var i = 0; i < a_passed.length; i+=1)
{
super.p(i + ' - ' + a_passed[i] ) // works
})
}
}
var c = new B()
var arr = [2000, 2001, 2003,2039, 2040]
c.a_works(10,3) // works
c.a_dont_fail(arr) // works
感谢您的阅读。