Наружный метод в JavaScript
953 сообщения
#5 лет назад
Приветствую всех. Хочу узнать ваше мнение, нормально или нет, для общей практики, реализовывать метод вне класса? Есть код, который нужно выполнять в другом скоупе, управляя им из класса, и чтоб он был привязан к экземпляру класса. Для этого описываю метод снаружи, и вызываю его из класса.function MyClass(){Нормально ли так делать (работает как надо) или лучше применить другие механизмы, например события (nodeJs)?
// что-то делаем и передаем результат в наружный метод
this.extMth(data);
}
const mc = new MyClass();
mc.extMth = function (data) {
// code
}
953 сообщения
#5 лет назад
Забыл добавить важную деталь. Метод может "подключаться" на лету, во время исполнения кода в классе и должен выдавать текущее состояние счетчика, например. Можно реализовать немного по другому, чтоб не нарушать принцип инкапсуляции...... но суть одна и та же, так проще вынести метод наружу, а нормально это или нет, чтоб не сказали, что гомнокод?
- function D() {
- let i = 0;
- setInterval(() => {
- console.log('in', i);
- if (this.cb) {
- this.cb(i);
- }
- i++;
- }, 2000);
- this.o = (cb) => {
- this.cb = cb;
- }
- }
- const d = new D();
- setTimeout(function() {
- d.o(function(r) {
- console.log('out', r);
- });
- }, 6000);
6863 сообщения
#5 лет назад
Цитата (lufter):чтоб не сказали, что гомнокодВсе-равно скажут, хоть в лепешку разбейтесь )))
10 сообщений
#5 лет назад
lufter, А почему вы так не создаете класс?
Classes ES6 - ссылкатам же можно внутри класса создать функции, хотите статическую или можно обычный метод.
- class Rectangle {
- constructor(height, width) {
this.height = height;
this.width = width;
}
}
- class Rectangle { constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.calcArea();
}
calcArea() {
return this.height * this.width;
}
}
Цитата (floppox):
Все-равно скажут, хоть в лепешку разбейтесь )))Почему?
10 сообщений
#5 лет назад
function arrayForBar(size)Вы можете объявить внутри.
{
this.getRandom = function (minEl, maxEl) {
return Math.random() * (maxEl - minEl) + minEl;
}
}
6863 сообщения
#5 лет назад
Цитата (Andrew_Fix):Почему?Потому что люди так устроены, что всегда найдут к чему придраться.
Не существует такого кода, которым были бы довольны все.
Особенно, если это javascript

Цитата (Andrew_Fix):
Почему?Потому что люди так устроены, что всегда найдут к чему придраться.
Не существует такого кода, которым были бы довольны все.
Особенно, если это javascript

10 сообщений
#5 лет назад
Цитата (floppox):Не существует такого кода, которым были бы довольны все.floppox,
Похоже на какую то выжималовку. Типа хотят выгнать человека с работы и начинают придираться ко всему. Если говорить про норм компании то там нужно просто придерживаться стандартов.
918 сообщений
#5 лет назад
А причем тут способ объявления классов?Тут же спрашивают насколько кошерно прилеплять методы динамически (насколько я понял из Цитата:
Метод может "подключаться" на лету)
Скажу от себя - по мне это как-то стремновато и лучше передавать функцию как коллбек или в конструктор или в один из методов. Но в js что только не сделают.
10 сообщений
10 сообщений
#5 лет назад
b0nn1e, Цитата:
Наследование?Тоже об этом подумал.
Но у него обязательное условие - Цитата:
"подключаться" на лету, во время исполнения кодаДумаю калбек лучше.