Size: a a a

2019 May 03

.

. in javascript_ru
Константин
Как выше
Логично, но задача на es6 переписать то, что работает
источник

DE

Denis Efremov in javascript_ru
.
Спасибо. Как сделать эту вещь рабочей ?
javascript
class NewPull extends Pull {
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

const newPull = new NewPull();

newPull.end();
источник

S

Syntax Highlight Bot in javascript_ru
Denis Efremov
javascript
class NewPull extends Pull {
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

const newPull = new NewPull();

newPull.end();
источник

К

Константин in javascript_ru
Denis Efremov
javascript
class NewPull extends Pull {
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

const newPull = new NewPull();

newPull.end();
Но это не совсем то, что он хочет
источник

DE

Denis Efremov in javascript_ru
javascript
class Pull {
 constructor (queue, redisClient, onTimeout, timeout){
   Readable.call(this, { objectMode: true });

   this.queue = queue;
   this.redis = redisClient;
   this.onTimeout = onTimeout || function () {};
   this.timeout = timeout || 10;
   this.idle = (this.timeout + (5 + Math.random() * (25 - 5) | 0)) * 1000;
 }

 get () {
   this.redis.on("error", (err) => {
     this.emit("error", err);
   });
 }
 
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

module.exports =  Pull;
источник

S

Syntax Highlight Bot in javascript_ru
Denis Efremov
javascript
class Pull {
 constructor (queue, redisClient, onTimeout, timeout){
   Readable.call(this, { objectMode: true });

   this.queue = queue;
   this.redis = redisClient;
   this.onTimeout = onTimeout || function () {};
   this.timeout = timeout || 10;
   this.idle = (this.timeout + (5 + Math.random() * (25 - 5) | 0)) * 1000;
 }

 get () {
   this.redis.on("error", (err) => {
     this.emit("error", err);
   });
 }
 
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

module.exports =  Pull;
источник

.

. in javascript_ru
Denis Efremov
javascript
class Pull {
 constructor (queue, redisClient, onTimeout, timeout){
   Readable.call(this, { objectMode: true });

   this.queue = queue;
   this.redis = redisClient;
   this.onTimeout = onTimeout || function () {};
   this.timeout = timeout || 10;
   this.idle = (this.timeout + (5 + Math.random() * (25 - 5) | 0)) * 1000;
 }

 get () {
   this.redis.on("error", (err) => {
     this.emit("error", err);
   });
 }
 
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

module.exports =  Pull;
Ну вот да. Синглтон такой выходит со своими методами
источник

DE

Denis Efremov in javascript_ru
.
Ну вот да. Синглтон такой выходит со своими методами
Какой ещё синглтон? Что ты имеешь ввиду?
источник

.

. in javascript_ru
Один класс с методами внутри него
источник

DE

Denis Efremov in javascript_ru
Это не синглтон
источник

.

. in javascript_ru
Denis Efremov
Это не синглтон
а как правильно?
источник

DE

Denis Efremov in javascript_ru
Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопроцессном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
источник

DE

Denis Efremov in javascript_ru
javascript
const Singleton = (function() {
 let instance;

 // Приватные методы и свойства

 // Конструктор
 function Singleton() {
   if (instance) return instance;
   instance = this;
 }

 // Публичные методы
 Singleton.prototype.test = function() {};

 return Singleton;
})();

console.log(new Singleton() === new Singleton());
источник

S

Syntax Highlight Bot in javascript_ru
Denis Efremov
javascript
const Singleton = (function() {
 let instance;

 // Приватные методы и свойства

 // Конструктор
 function Singleton() {
   if (instance) return instance;
   instance = this;
 }

 // Публичные методы
 Singleton.prototype.test = function() {};

 return Singleton;
})();

console.log(new Singleton() === new Singleton());
источник

DE

Denis Efremov in javascript_ru
Но это антипаттерн
источник

DE

Denis Efremov in javascript_ru
Константин
Но это не совсем то, что он хочет
Ты можешь объяснить что он хочет?
источник

.

. in javascript_ru
Denis Efremov
javascript
class Pull {
 constructor (queue, redisClient, onTimeout, timeout){
   Readable.call(this, { objectMode: true });

   this.queue = queue;
   this.redis = redisClient;
   this.onTimeout = onTimeout || function () {};
   this.timeout = timeout || 10;
   this.idle = (this.timeout + (5 + Math.random() * (25 - 5) | 0)) * 1000;
 }

 get () {
   this.redis.on("error", (err) => {
     this.emit("error", err);
   });
 }
 
 end () {
   this.redis.end(false);
   this.push(null);
 }
}

module.exports =  Pull;
Вот это я хотел похоже
источник

DE

Denis Efremov in javascript_ru
Так метод в классе - это аналог метода в прототипе объекта
источник

.

. in javascript_ru
Denis Efremov
Так метод в классе - это аналог метода в прототипе объекта
Понял. Спасибо.
Я просто думал, что могу инкапсулировать логику от конструктора через extends
источник

DE

Denis Efremov in javascript_ru
javascript
class A {
 constructor (c) {
   this.c = c
 }

 b () {
   return this.c
 }
}


То же самое

javascript
const A = function (c) {
 this.c = c
}

A.prototype.b = function () {
 return this.c
}
источник