JSOM のサンプルを見ると当たり前のように使われている Function.createDelegate について。
引数に this を渡しているのでだいたい想像が付くとは思いますが、JavaScript の this の面倒なアレを解決してくれるんですね。
<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server"> <script type="text/javascript"> var obj = { web: null, retrieveTitle: function () { var ctx = SP.ClientContext.get_current(); this.web = ctx.get_web(); ctx.load(this.web); ctx.executeQueryAsync(this.onSuccess); // NG ctx.executeQueryAsync(Function.createDelegate(this, this.onSuccess)); // OK }, onSuccess: function () { alert(this.web.get_title()); } }; SP.SOD.executeFunc("sp.js", "SP.ClientContext", function () { obj.retrieveTitle(); }); </script> </asp:Content>
ちなみに Function.createDelegate は MicrosoftAjax.js に定義されています。