2016-04-26 2 views
0

Я пытаюсь научиться выразить и хотел использовать ES6 с babel. Мои вопросы: когда я использую статические методы для обработки запросов, например, ниже;Вопросы использования ES6 Express и статических методов

class MyCtrl { 

    static index (req,res) { 
     res.status(200).send({data:"json data"}); 
    } 
} 

router.get('/', MyCtrl.index) 

Мне было интересно, будет ли это (используя статические методы) выполнять производительность? У меня мало знаний о времени выполнения Node.js, но, как я знаю, использование статических методов так часто на каком-то языке (например, C#) не очень хорошо.

Или существует другой правильный способ сделать это с помощью классов ES6.

ответ

2

ES6 классы не совсем какая-то новая структура, это всего лишь некоторый синтаксический сахар для прототипа модели JavaScript.

Так что, когда вы делаете что-то вроде этого:

class Animal { 
    constructor(name, age) { 
    this.name = name; 
    this.age = age; 
    } 

    static printAllowedTypes() { 
    console.log('Rabbit, Dog, Cat, Monkey'); 
    } 

    printName() { 
    console.log(`Name: ${this.name}`); 
    } 

    printAge() { 
    console.log(`Age: ${this.age}`); 
    } 
} 

За кулисами, это в основном просто переводится так:

function Animal(name, age) { 
    this.name = name; 
    this.age = age; 
} 

Animal.printAllowedTypes = function() { 
    console.log('Rabbit, Dog, Cat, Monkey'); 
}; 

Animal.prototype.printName = function() { 
    console.log(`Name: ${this.name}`); 
}; 

Animal.prototype.printAge = function() { 
    console.log(`Age: ${this.age}`); 
}; 

Так что это удобное сокращение, но это все-таки только с помощью прототипичный в JavaScript вещи. Так что, насколько ваш вопрос идет, все, что вы делаете, - это регулярная функция до router.get, поэтому нет никакой разницы в производительности.

+0

Спасибо. ваш ответ имеет смысл. –

Смежные вопросы