Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / docs / output / Function.html
1 <div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Function-props"><img src="resources/images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Function-methods"><img src="resources/images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Function-events"><img src="resources/images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="bookmark" href="../docs/?class=Function"><img src="resources/images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><h1>Class <a href="source/Ext.html#cls-Function">Function</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Global</td></tr><tr><td class="label">Defined In:</td><td class="hd-info">Ext.js,&#13;Ext-more.js</td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/Ext.html#cls-Function">Function</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info">Object</td></tr><tr><td class="hd-info"></td></tr></table><div class="description">These functions are available on every Function object (any JavaScript function).</div><div class="hr"></div><a id="Function-props"></a><h2>Public Properties</h2><div class="no-members">This class has no public properties.</div><a id="Function-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Function-createCallback"></a><b><a href="source/Ext.html#method-Function-createCallback">createCallback</a></b>()\r
2     :\r
3                                         Function<div class="mdesc"><div class="short">Creates a callback that passes arguments[0], arguments[1], arguments[2], ...&#13;\r
4 Call directly on any function. Example:...</div><div class="long">Creates a callback that passes arguments[0], arguments[1], arguments[2], ...\r
5 Call directly on any function. Example: <code>myFunction.createCallback(arg1, arg2)</code>\r
6 Will create a function that is bound to those 2 args. <b>If a specific scope is required in the\r
7 callback, use <a href="output/Function.html#Function-createDelegate" ext:member="createDelegate" ext:cls="Function">createDelegate</a> instead.</b> The function returned by createCallback always\r
8 executes in the window scope.\r
9 <p>This method is required when you want to pass arguments to a callback function.  If no arguments\r
10 are needed, you can simply pass a reference to the function as a callback (e.g., callback: myFn).\r
11 However, if you tried to pass a function with arguments (e.g., callback: myFn(arg1, arg2)) the function\r
12 would simply execute immediately when the code is parsed. Example usage:\r
13 <pre><code><b>var</b> sayHi = <b>function</b>(name){\r
14     alert(<em>'Hi, '</em> + name);\r
15 }\r
16 \r
17 <i>// clicking the button alerts <em>"Hi, Fred"</em>\r</i>
18 <b>new</b> Ext.Button({\r
19     text: <em>'Say Hi'</em>,\r
20     renderTo: Ext.getBody(),\r
21     handler: sayHi.createCallback(<em>'Fred'</em>)\r
22 });</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Function</code><div class="sub-desc">The new function</div></li></ul></div></div></div></td><td class="msource">Function</td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Function-createDelegate"></a><b><a href="source/Ext.html#method-Function-createDelegate">createDelegate</a></b>(&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Array&nbsp;args</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean/Number&nbsp;appendArgs</code>]</span>&nbsp;)\r
23     :\r
24                                         Function<div class="mdesc"><div class="short">Creates a delegate (callback) that sets the scope to obj.&#13;\r
25 Call directly on any function. Example: this.myFunction.cr...</div><div class="long">Creates a delegate (callback) that sets the scope to obj.\r
26 Call directly on any function. Example: <code>this.myFunction.createDelegate(this, [arg1, arg2])</code>\r
27 Will create a function that is automatically scoped to obj so that the <tt>this</tt> variable inside the\r
28 callback points to obj. Example usage:\r
29 <pre><code><b>var</b> sayHi = <b>function</b>(name){\r
30     <i>// Note this use of <em>"this.text"</em> here.  This <b>function</b> expects to\r</i>
31     <i>// execute within a scope that contains a text property.  In this\r</i>
32     <i>// example, the <em>"this"</em> variable is pointing to the btn object that\r</i>
33     <i>// was passed <b>in</b> createDelegate below.\r</i>
34     alert(<em>'Hi, '</em> + name + <em>'. You clicked the <em>"'</em> + this.text + <em>'"</em> button.'</em>);\r
35 }\r
36 \r
37 <b>var</b> btn = <b>new</b> Ext.Button({\r
38     text: <em>'Say Hi'</em>,\r
39     renderTo: Ext.getBody()\r
40 });\r
41 \r
42 <i>// This callback will execute <b>in</b> the scope of the\r</i>
43 <i>// button instance. Clicking the button alerts\r</i>
44 <i>// <em>"Hi, Fred. You clicked the "</em>Say Hi<em>" button."</em>\r</i>
45 btn.on(<em>'click'</em>, sayHi.createDelegate(btn, [<em>'Fred'</em>]));</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the function is executed.\r
46 <b>If omitted, defaults to the browser window.</b></div></li><li><code>args</code> : Array<div class="sub-desc">(optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)</div></li><li><code>appendArgs</code> : Boolean/Number<div class="sub-desc">(optional) if True args are appended to call args instead of overriding,\r
47 if a number the args are inserted at the specified position</div></li></ul><strong>Returns:</strong><ul><li><code>Function</code><div class="sub-desc">The new function</div></li></ul></div></div></div></td><td class="msource">Function</td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Function-createInterceptor"></a><b><a href="source/Ext.html#method-Function-createInterceptor">createInterceptor</a></b>(&nbsp;<code>Function&nbsp;fcn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)\r
48     :\r
49                                         Function<div class="mdesc"><div class="short">Creates an interceptor function. The passed function is called before the original one. If it returns false,&#13;\r
50 the ori...</div><div class="long">Creates an interceptor function. The passed function is called before the original one. If it returns false,\r
51 the original one is not called. The resulting function returns the results of the original function.\r
52 The passed function is called with the parameters of the original function. Example usage:\r
53 <pre><code><b>var</b> sayHi = <b>function</b>(name){\r
54     alert(<em>'Hi, '</em> + name);\r
55 }\r
56 \r
57 sayHi(<em>'Fred'</em>); <i>// alerts <em>"Hi, Fred"</em>\r</i>
58 \r
59 <i>// create a <b>new</b> <b>function</b> that validates input without\r</i>
60 <i>// directly modifying the original <b>function</b>:\r</i>
61 <b>var</b> sayHiToFriend = sayHi.createInterceptor(<b>function</b>(name){\r
62     <b>return</b> name == <em>'Brian'</em>;\r
63 });\r
64 \r
65 sayHiToFriend(<em>'Fred'</em>);  <i>// no alert\r</i>
66 sayHiToFriend(<em>'Brian'</em>); <i>// alerts <em>"Hi, Brian"</em></i></code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fcn</code> : Function<div class="sub-desc">The function to call before the original</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.\r
67 <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b></div></li></ul><strong>Returns:</strong><ul><li><code>Function</code><div class="sub-desc">The new function</div></li></ul></div></div></div></td><td class="msource">Function</td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Function-createSequence"></a><b><a href="source/Ext-more.html#method-Function-createSequence">createSequence</a></b>(&nbsp;<code>Function&nbsp;fcn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)\r
68     :\r
69                                         Function<div class="mdesc"><div class="short">Create a combined function call sequence of the original function + the passed function.\r
70 The resulting function retur...</div><div class="long">Create a combined function call sequence of the original function + the passed function.
71 The resulting function returns the results of the original function.
72 The passed fcn is called with the parameters of the original function. Example usage:
73 <pre><code><b>var</b> sayHi = <b>function</b>(name){
74     alert(<em>'Hi, '</em> + name);
75 }
76
77 sayHi(<em>'Fred'</em>); <i>// alerts <em>"Hi, Fred"</em></i>
78
79 <b>var</b> sayGoodbye = sayHi.createSequence(<b>function</b>(name){
80     alert(<em>'Bye, '</em> + name);
81 });
82
83 sayGoodbye(<em>'Fred'</em>); <i>// both alerts show</i></code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fcn</code> : Function<div class="sub-desc">The function to sequence</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the passed function is executed.
84 <b>If omitted, defaults to the scope in which the original function is called or the browser window.</b></div></li></ul><strong>Returns:</strong><ul><li><code>Function</code><div class="sub-desc">The new function</div></li></ul></div></div></div></td><td class="msource">Function</td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Function-defer"></a><b><a href="source/Ext.html#method-Function-defer">defer</a></b>(&nbsp;<code>Number&nbsp;millis</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Array&nbsp;args</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean/Number&nbsp;appendArgs</code>]</span>&nbsp;)\r
85     :\r
86                                         Number<div class="mdesc"><div class="short">Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:&#13;\r
87 var sa...</div><div class="long">Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:\r
88 <pre><code><b>var</b> sayHi = <b>function</b>(name){\r
89     alert(<em>'Hi, '</em> + name);\r
90 }\r
91 \r
92 <i>// executes immediately:\r</i>
93 sayHi(<em>'Fred'</em>);\r
94 \r
95 <i>// executes after 2 seconds:\r</i>
96 sayHi.defer(2000, this, [<em>'Fred'</em>]);\r
97 \r
98 <i>// this syntax is sometimes useful <b>for</b> deferring\r</i>
99 <i>// execution of an anonymous <b>function</b>:\r</i>
100 (<b>function</b>(){\r
101     alert(<em>'Anonymous'</em>);\r
102 }).defer(100);</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>millis</code> : Number<div class="sub-desc">The number of milliseconds for the setTimeout call (if less than or equal to 0 the function is executed immediately)</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the function is executed.\r
103 <b>If omitted, defaults to the browser window.</b></div></li><li><code>args</code> : Array<div class="sub-desc">(optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)</div></li><li><code>appendArgs</code> : Boolean/Number<div class="sub-desc">(optional) if True args are appended to call args instead of overriding,\r
104 if a number the args are inserted at the specified position</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The timeout id that can be used with clearTimeout</div></li></ul></div></div></div></td><td class="msource">Function</td></tr></tbody></table><a id="Function-events"></a><h2>Public Events</h2><div class="no-members">This class has no public events.</div></div>