Занимавайки се с библиотеката с възли 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
, споменато в примера.
require
иthis
;require
е просто функция като всяка друга в JS. - person Mathletics   schedule 14.05.2015