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
函数试图访问this
variables,当你调用myprint
, this
variables没有设置为process.stdout
,而不像调用process.stdout.write
。
注意
var out = process.stdout; out.print('wow\n');
将按预期工作。