наследование прототипа в node.js - PullRequest
0 голосов
/ 25 апреля 2011

Я ищу способ сделать наследование прототипов в node.js, который соответствует моему собственному стилю программирования.Для меня наиболее важно использовать переменные вместо того, чтобы «загрязнять» глобальное пространство имен (если вам не нравится эта идея, пожалуйста, пропустите это).Я нашел по крайней мере полдюжины описаний по этой теме (в Google более 270000 записей по этой теме).

Вот что я нашел самый многообещающий вариант, но у меня что-то не так:

> var A = function() {
... this.value = 1;
... };
> A.prototype.print = function() {
... console.log(this.value);
... }
[Function]
> var a = new A();
> a.print();
1
> var B = function() {
... this.value = 2;
... };
> B.prototype.__proto__ = A.prototype;
> b = B();
> b.print()
TypeError: Cannot call method 'print' of undefined
    at [object Context]:1:3
    at Interface.<anonymous> (repl.js:150:22)
    at Interface.emit (events.js:42:17)
    at Interface._onLine (readline.js:132:10)
    at Interface._line (readline.js:387:8)
    at Interface._ttyWrite (readline.js:564:14)
    at ReadStream.<anonymous> (readline.js:52:12)
    at ReadStream.emit (events.js:59:20)
    at ReadStream._emitKey (tty_posix.js:286:10)
    at ReadStream.onData (tty_posix.js:49:12)

Как только я узнаю, как это работает, я надеюсь, что смогу сделать еще более сложные вещи, такие как:

var B = function() {
  this.value = 2;
  print();
}

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Попробуйте util.inherits

1 голос
/ 25 апреля 2011

Вам нужно сделать:

b = new B();

И тогда этот пример будет работать так, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...