编程语言
首页 > 编程语言> > ASP.NET AJAX Function.createDelegate与Function.createCallback吗?

ASP.NET AJAX Function.createDelegate与Function.createCallback吗?

作者:互联网

我正在阅读manning-asp.net ajax的实际应用.在第54-58页上描述了客户端委托和回调.

简而言之:

使用客户端委托,您可以在事件处理程序本身中更改此变量以反映另一个对象. (因此不会触发DOM事件的DOM对象)

通过回调,您可以将上下文对象传递给事件处理程序,该事件对象将在事件处理程序中作为第二个参数/参数提供.

两者都可以将对象“传递”给事件处理程序(无论是此对象还是上下文对象),而该事件处理程序将无法使用该对象(在其范围内).

这些客户端委托与回调之间有何区别?

在我看来:

只有您希望在事件处理程序中可用的对象可以通过不同的方式访问:

>客户代表:这个
>回调:第二个参数

…也许只有回调具有DomEvent(first parameter),但没有客户端委托?

这个对吗?这就是全部?

也许您可以解释客户端委托和回调之间的区别.

解决方法:

我对此不太确定,但是我认为回调是在将页面提交到服务器时发生的.

客户端创建委托在那里创建用于调用JavaScript方法的委托.

Function.CreateDelegate()方法确实很有帮助.

假设您要处理JavaScript中的按钮单击事件.处理按钮单击的函数中可用的“ this”对象是被单击的按钮.

现在说您有一个JavaScript对象,它捕获按钮单击事件并执行某些操作.通常,“ this”是指JavaScript对象本身,但是由于使用Object的方法来处理按钮单击事件,因此“ this”实际上是指引发该事件的对象:按钮.

为了解决这个问题,创建了JavaScript apply方法.因此,您实际上不是通过在attachEvent / attachEventListener方法(或Ajax.NET Framework中的$addHandler()方法)中指定JavaScript Object的方法来捕获按钮单击事件,而是实际上将apply()方法与这些attachEvent / attachEventListener.这将更改上下文,以便“ this”引用JavaScript对象,而不是引发事件的对象.

现在,Function.CreateDelegate()方法的作用不只是在创建客户端委托中使用apply方法.

看一下代码:

Function.createDelegate = function Function$createDelegate(instance, method) {
    /// <summary locid="M:J#Function.createDelegate" />
    /// <param name="instance" mayBeNull="true"></param>
    /// <param name="method" type="Function"></param>
    /// <returns type="Function"></returns>
    var e = Function._validateParams(arguments, [
    {name: "instance", mayBeNull: true},
    {name: "method", type: Function}
    ]);
    if (e) throw e;
    return function() {
      return method.apply(instance, arguments);
    }
} 

关于apply()方法,您应该了解一件事.当您执行它时,它将执行作为委托的方法.为了解决这个问题,createDelegate方法执行上述操作.

因此,我不太确定回调是否适合这种情况,但是当JavaScript对象处理由某些UI元素引起的事件时,使用createDelegate()方法是一个好主意.

我假设回调是将请求从浏览器发送到服务器时发生的操作.大多数情况下,__doPostback方法用于执行回调.此方法有2个参数…导致向服务器回发/回调的对象,以及回发/回调的参数.但是,这对于客户端代理来说是完全不同的.

快乐编码

-弗林尼

标签:asp-net-ajax,asp-net,javascript
来源: https://codeday.me/bug/20191210/2103042.html