【发布时间】:2015-05-14 15:32:44
【问题描述】:
在处理robots 节点库时,我注意到了
var robots = new require('robots').RobotsParser();
不同于
var robots = new (require('robots')).RobotsParser();
第一个 require 失败,感叹 this.someFunction() 不存在,而第二个成功。
出于某种原因,上面第一行中的this 对象显然是指全局对象,而在第二行中它绑定到robots 模块。为什么?
我收到的错误是:
/home/user/crawler/lib/robots/lib/parser.js:44
this.setUrl(url, after_parse);
^
TypeError: Object #<Object> has no method 'setUrl'
setUrl 是示例中提到的实际someFunction。
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为 OP 没有遵循 usage instructions 的回购协议,然后对它不起作用感到惊讶。
-
@Mathletics 有一个错误的用法,但它仍然展示了一个可以回答的意外行为的特殊情况。 IMO 称其为题外话是矫枉过正。
-
@E_net4 这就是投票系统的美妙之处:我只有一票。无论如何,发现了一个真正的骗子。
-
@davide
require和this之间没有关系;require只是一个函数,就像 JS 中的任何其他函数一样。
标签: javascript node.js this require