`this` object in require().function()
`this` object in require().function()
在处理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'
CCD_ 5是示例中提到的实际CCD_。
var robots = new require('robots').RobotsParser();
被解析为
var robots = (new require('robots')).RobotsParser();
即尝试调用CCD_ 8实例的CCD_不是你想要的!
第一行调用require
的构造函数,它有效地修改了库范围内的this
引用,以指向require
的一个新的假定实例。这是不正确的,require
应该始终作为常规函数调用。添加括号(如第二行所示(可以解决问题,因为它将创建RobotsParser
的新实例。
相关文章:
- javascript multiple if in function
- draw() function of Processing in Javascript
- Is it good to make function in function using 'return
- Call a function from a <a> tag in javascript?
- Jquery If/Then in Click Function?
- Dynamics Variable (variable++) in Append function DOM Javasc
- Javascript: argument unpacking in function.prototype.bind()?
- $(function () { } in javascript/Jquery 中的意思是什么
- AngularJS Access $scope in function
- checkbox onclick function in another function
- $ sign in JavaScript function
- Function Expected In IE7 & IE8
- JS function in Brython
- apply() / call() vs [function]() in jquery
- java.lang.Double.longBitsToDouble function in JavaScript
- what is the Template.templateName.rendered= function(){} in
- Angular Function not Called in <span> tag
- Variable function names in Require & Backbone
- Javascript eval in function
- getBaseURL() javascript call function in a href=""