所以,下面的例子运行得很好,花花公子。
document.write("<pre>");
try {
document.writeln( document.querySelector );
document.writeln( "example".indexOf );
(function(x){
var f=x;
document.writeln( f + ",\n\t" + x.toString() );
})( "example".indexOf );
(function(x){ document.writeln(
typeof x === typeof document.querySelector
) })( document.querySelector );
} catch(e) { document.writeln(
"<span style='color:red'>" + e + "</span>"
) };
document.write("</pre>");
因此,这些内置函数似乎是可引用的,因为它们可以作为参数传递,用作变量,并且它们保留它们的对象原型(至少是toString)。然而,在chrome(至少)中,事情变得非常奇怪并且是一个类型错误:非法调用
document.write("<pre>");
try {
(function(x){
var f=x;
document.writeln( f() );
})( "example".indexOf );
(function(x){ document.writeln(
x()
) })( document.querySelector );
} catch(e) { document.writeln(
"<span style='color:red'>" + e + "</span>"
) };
document.write("</pre>");
我的问题是:
注意 1 :“代理功能”示例:
function proxy(x){
return document.querySelector(x);
}