2016-11-29 2 views
0

Я новичок в использовании ES6 classes. Я пытаюсь понять, как группировать методы в классе, который я создаю для Table, поэтому такие методы, как сортировка, изменение размера и т. Д. .Методы объекта в классе

class Table extends someClass{ 
    myMethods(){ 
     //BLAH  
    } 
    var column={ 
     sort:()=>{ 
      console.log('firing'); 
     }, 
     resize:{ 
      mousedown:()=>{ 

      }, 
      mousemove:()=>{ 

      }, 
      mouseup:()=>{ 

      }, 
      mouseout:()=>{ 

      } 
     }  
    }, 
    var cells={ 
     edit:()=>{ 
      console.log('firing'); 
     } 
    } 
} 

// ОШИБКА (Неожиданный Identifier) ​​

проблема заключается в Table класс уже расширения (базовый класс по умолчанию) someClass, и я бы сказал, расширяет Column класс или что-то, но я не могу, так как он уже расширяет базовый класс.

Вопрос: Как я могу организовать мои методы sort, resize внутри класса, который уже проходит другой класс? (или это нестандартное, и если да, то укажите надлежащий путь.)

+0

Это не совсем понятно, что вы спрашиваете здесь. Почему таблица расширяет столбец? –

+0

@EvanTrimboli все, что я ищу, это способ организовать методы внутри класса, есть методы, которые идут на ячейки столбцов таблицы против методов, которые будут отображаться на ячейках тела таблицы, поэтому я пытаюсь организовать их таким образом. –

+0

Если это вещи, которые нуждаются в собственных методах, то они должны быть классами. –

ответ

0

Ваш код не работает, потому что вы используете ключевое слово var в классе класса. У вас могут быть только методы в классе. Вы можете создавать свойства для класса, задавая для них значения в методах. Например:

class Table extends someClass { 
    constructor() { 
     this.column = { 
      sort:() => { 
       console.log('firing'); 
      }, 
      resize:() => { 
       console.log('firing'); 
      } 
     }; 

     this.cells = { 
      edit:() => { 
       console.log('firing'); 
      } 
     } 

    } 

    myMethods() { 
     //BLAH  
    } 
} 

Теперь вы можете получить доступ к методам так:

var table = new Table(); 
table.column.sort(); 

Этот class Table синтаксис объявляет класс с типом Table. {} синтаксис, например:

{ 
    edit:() => { 
     console.log('firing'); 
    } 
} 

создает объекты без типа.

Here's a guide on ES6 classes which should answer your other questions.

+0

Структура на самом деле не имеет смысла. Зачем вы называть 'cells.edit' или' columns.sort'? Похоже, что эти методы будут принадлежать некоторому классу «Cell» или «Column». –

+0

Можете ли вы иметь два конструктора, я думал, что конструктор должен быть в родительском классе? –

+0

@EvanTrimboli это то, что я пытался сделать, но как можно наследовать таблицу из нескольких классов ... 'Cell',' Column', 'Base' –