2011-04-25 134 views
0

我正在寻找如何在node.js中做适合我自己的编程风格的原型继承的方法。对我来说最重要的是使用变量而不是“污染”全局命名空间(如果你不喜欢这个想法,请跳过这一点)。我发现至少有六个关于这个主题的描述(谷歌在那一个上有超过270000个条目)。node.js中的原型继承

这是我发现的最有前途的变量,但我有一些错误:

> 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(); 
} 

回答

1

你需要做的:

b = new B(); 

然后这个例子将按照你的预期工作。

+0

太棒了!非常感谢,你救了我的一天 – mark 2011-04-25 10:03:28

2
+0

感谢您的提示。我已经看到关于贬低util.inherits的讨论,这就是为什么我更喜欢我在示例中使用的原型.__ proto__变体。 – mark 2011-04-25 10:06:12

+0

有趣,得到任何链接? – 2011-04-25 10:09:13