使用与文档不同的上下文调用调用 .querySelector() 方法?



在JS中,你可以在任何DOM元素中调用querySelector,因为它的Element原型中有该方法,并且它只会在该上下文中生效,如下所示:

const node = document.getElementById('test-node')
node.querySelector('.example')

它会正常工作,但我想做的是使用.call()变量传递该方法后调用该方法,这就是我想做的:

const querySelector = document.querySelector
querySelector.call(node, '.example')

不幸的是,这将引发TypeError: Illegal invocation异常,我怎样才能让它工作?

显然,至少在Chrome中,document与元素具有不同的querySelector

相反,您可以直接调用ElementquerySelector

Element.prototype.querySelector.call(node, 'p')

最新更新