火狐 (v52.0), jquery
这个有效:
// example 1
$('html').find('body')
这个有效:
// example 2
var h
h=$('html')
h.find('body')
这行不通:
// example 3
var f
f=$('html').find
f('body')
我明白了
Error: Permission denied to access property "ownerDocument"
为什么?
但这行得通:
// example 4
var a
a = x => $('html').find(x)
a('body')
示例 3 不起作用,因为当您将 find
分配给 f
时,会在全局上下文中调用它。如果您使用 call
并将有效的 jQuery
对象作为上下文传递,则代码可以正常工作。试试这个
var f = $('html').find;
console.log(f.call($('html'), 'body').length)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
另外,示例 4 可以工作,因为如果不使用箭头函数编写,a
可以转换为以下代码。
var a = function(x) {
return $('html').find(x);
};
这只是示例 1,但是带有一个包装函数以获取参数