function分配不起作用

我是Node.js的新手 我已经search论坛,但无法find类似的问题。 这是我遇到的问题。 下面的代码运行良好。

process.stdout.write("hello world!\n"); 

但下面的代码:

 var myprint = process.stdout.write; myprint("hello world"); 

会产生以下错误:

 TypeError: Cannot read property 'defaultEncoding' of undefined 

有什么build议么? 非常感谢。

可能的话, write()方法需要用正确的对象引用来调用,所以write()方法知道它正在写入什么stream。 有多种方法可以解决这个问题。 这里有一个方法:

 var myprint = process.stdout.write.bind(process.stdout); myprint("hello world"); 

有关更多信息,请参阅MDN上的.bind()

为了将来的参考,当你这样做:

 var myprint = process.stdout.write; 

myprint只包含对write方法的引用,然后该方法被调用,不带对象引用。 这意味着write()方法内的this指针不会像在你调用process.stdout.write()时那样指向stdoutstream。 如果一个方法需要它的实例数据(大多数方法都是这样),那么这就产生了一个问题。 您可以使用.bind()将对象引用“绑定”到一个新的临时函数,该函数允许您将其分配给另一个variables,然后像您正在尝试的那样直接使用它。

write函数试图访问thisvariables,当你调用myprintthisvariables没有设置为process.stdout ,而不像调用process.stdout.write

注意

 var out = process.stdout; out.print('wow\n'); 

将按预期工作。