功能分配不起作用

时间:2015-05-31 22:47:08

标签: javascript node.js

我是Node.js的新手。我搜索过论坛但找不到类似的问题。这是我遇到的问题。以下代码运行正常。

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

但是以下代码:

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

将生成以下错误:

TypeError: Cannot read property 'defaultEncoding' of undefined

有什么建议吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

write函数正在尝试访问this变量上的变量,当您调用process.stdout时,该变量未设置为myprint,与调用{{ 1}}。

请注意

process.stdout.write

将按预期工作。

答案 1 :(得分:2)

可能需要使用正确的对象引用调用var out = process.stdout; out.print('wow\n'); 方法,以便write()方法知道它正在写入哪个流。有多种方法可以解决这个问题。这是一种方式:

write()

有关详细信息,请参阅.bind() on MDN

以备参考时使用:

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

var myprint = process.stdout.write; 仅包含对myprint方法的引用,然后在没有对象引用的情况下调用该方法。这意味着write方法中的this指针不会像调用write()时那样指向stdout流。如果某个方法需要它的实例数据(大多数方法都这样做),那么就会产生问题。你可以"绑定"使用process.stdout.write()的对象引用新的临时函数,允许您将其分配给另一个变量,然后像您尝试的那样直接使用它。