Function原生类型(Function原生类型的扩展见实例下方)
• 与Array,String等类型处于同等地位
• 每个方法均为Function类型的实例
– typeof(Array) == typeof(Function) == “function”
• 方 法调用时根据发起的对象来确定this上下文引用
• Function.prototype.apply(instance, args)
• Function.prototype.call(instance, [ arg1 [ , arg2 [ , … ] ] ])
--------------------------------------------------------------------------------------------------------
实例
html页面
<div id="info"></div>
<script language="javascript" type="text/javascript">
function display(text)
{
document.getElementById("info").innerHTML += (text + "<br />");
}
function aMethod()
{
var result = this.toString();
for (var i = 0; i < arguments.length; i++)
{
result += (", " + arguments[i]);
}
return result;
}
var a = new String("I am string A");
var b = new String("I am string B");
a.aMethod = b.aMethod = aMethod;
display("aMethod(): " + aMethod());
display("a.aMethod(): " + a.aMethod());
display("b.aMethod(): " + b.aMethod());
display("a.aMethod.call(b, 1, 2, 3): " + a.aMethod.call(b, 1, 2, 3));
display("b.aMethod.apply(a, [1, 2, 3]): " + b.aMethod.apply(a, [1, 2, 3]));
</script>
Microsoft AJAX Library中对Function原生类型的扩展
注:要使用扩展需添加ScriptManager控件 如:<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
• Function.createDelegate(instance, method)方法:
–得到一个方法引用,执行它时则会调用method方法,并且保证method方法的上下文this引用为instance
• Function.createCallback(method, context)方法:
–得到一个方法引用,执行它时则会调用method方法,并将context作为额外的参数传入