如何将其转换为基于类的Javascript?

如何将其转换为基于类的Javascript?,javascript,class,Javascript,Class,我需要帮助转换为基于类的Javascript。下面是我的代码: function Foo(options) { this.index = options.index; this.name = options.name || 'foo'; var items = options.items; var self = this; function bar() { self.say(); } items.forEach(function () { self.say(); }); for

我需要帮助转换为基于类的Javascript。下面是我的代码:

function Foo(options) {
this.index = options.index;
this.name = options.name || 'foo';
var items = options.items;
var self = this;
function bar() {
    self.say();
}
items.forEach(function () {
    self.say();
});
for (var i = 0; i < items.length; i++) {
    bar();
}
}

Foo.prototype.say = function () {
    console.log(arguments);
};
函数Foo(选项){
this.index=options.index;
this.name=options.name | |‘foo’;
var items=options.items;
var self=这个;
功能条(){
self.say();
}
items.forEach(函数(){
self.say();
});
对于(变量i=0;i
这就是我尝试过的:

class Foo {
constructor(options) {
    this.index = options.index;
    this.name = options.name || 'foo';
    this.items = options.items

    this.items.forEach(() => {
        this.say()
    })
    for (var i = 0; i < items.length; i++) {
        this.bar();
    }
}
bar() {
    this.say();
}

}

class say extends Foo {
    constructor() {
       console.log(arguments)
    }

}
class-Foo{
构造函数(选项){
this.index=options.index;
this.name=options.name | |‘foo’;
this.items=options.items
此.items.forEach(()=>{
这个,说()
})
对于(变量i=0;i
我目前正在尝试了解基于类的Javascript是如何工作的,以及是否值得切换到它


请问,这个代码有什么问题吗?

这个类的
class Foo
基本上没有问题。但是,你不应该定义
类,比如说
。它必须是
Foo

类Foo中的成员函数{
class Foo {
   constructor(options) {
      this.index = options.index
      this.name = options.name
      this.items = options.items

      var self = this

      this.items.forEach((e) => self.say(e))

      for(var i = 0; i < this.items.length; i ++) {
           this.bar(items[i])
      }
   }

   say(arg) { console.log(arg)  }
   bar(arg) { this.say(arg)     }
}
构造函数(选项){ this.index=options.index this.name=options.name this.items=options.items var self=这个 this.items.forEach((e)=>self.say(e)) 对于(var i=0;i

假设items是一个数组

您的
实现没有定义
say()的内容
isok他的帖子被删除了,这里再次出现另一个链接:您需要调用
super()
在子类的构造函数中。有时函数只是一个函数。@Liam:你能告诉我我复制了谁的注释吗?我没有对此投票,但它绝对正确。它正在调用
this。say
,而
this
没有
say
方法。你真的试过吗,@messerbill?我已经并且我可以证实,say是FooNo biggie的原型,@messerbill,这对我来说也是个新闻:当你否决了答案时,我刚刚开始思考这到底是怎么回事