Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否使用与文档不同的上下文调用调用.querySelector()方法?_Javascript_Dom - Fatal编程技术网

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

Javascript 是否使用与文档不同的上下文调用调用.querySelector()方法?,javascript,dom,Javascript,Dom,在JS中,您可以在任何DOM元素中调用querySelector,因为它的元素原型中有该方法,并且它仅在该上下文中有效,如下所示: const node = document.getElementById('test-node') node.querySelector('.example') 它可以很好地工作,但我想做的是在使用.call()将方法与变量一起传递后调用该方法,下面是我想做的: const querySelector = document.querySelector queryS

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

const node = document.getElementById('test-node')
node.querySelector('.example')
它可以很好地工作,但我想做的是在使用
.call()
将方法与变量一起传递后调用该方法,下面是我想做的:

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

不幸的是,这将抛出一个
类型错误:非法调用
异常,我如何使它工作?

显然,至少在Chrome中,
文档
与元素有一个不同的
查询选择器

相反,您可以直接调用
元素
查询选择器

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

为什么不直接调用
node.querySelector()
??如果
node
的值是对DOM元素的引用,那么这就行了。如果它不是对DOM元素的引用,那么用该值调用
.querySelector()
,作为
this
无论如何都没有意义。