我正在检查来自html5rocks的代码: http://www.html5rocks.com/static/demos/parallax/demo-1a/scripts/parallax.js
请注意他们使用
(function(win, d) {
var $ = d.querySelector.bind(d);
....
var mainBG = $('section#content');
....
})(window, document);
为什么他们将文档绑定到querySelector。是不是已经确定了文件的范围?
答案 0 :(得分:3)
不,the function未绑定到特定文档(可能还有其他文档,而不仅仅是window.document
)。如果没有尝试,您将获得WRONG_THIS_ERR
例外 - 您需要将其应用于实现Document
interface的对象。
另请参阅MDN's introduction to the this
keyword,了解如何确定函数调用的thisVal
(“context”)。
答案 1 :(得分:0)
对于将来的Google员工来说,作为一个补充,也可以使用document.querySelector.bind(document)
进行类似jQuery的选择:
var $$ = document.querySelector.bind(document);
console.log( $$('#answers').textContent );
var $$ = document.querySelector.bind(document);
console.log( 'Ye Olde StackSnippet body: ', $$('body').textContent );