annotate source/examples/call-apply.js @ 162:77e87f1b5811 core-javascript

$ hg merge core-javascript.closure-exercises # done, at least for now
author jf3243
date Wed, 09 Nov 2011 17:00:38 +0000
parents 48305b89a155
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
79
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
1 // Things related to call and apply that JS programmers should know.
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
2
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
3
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
4 // Standard names for native code functions.
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
5
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
6 var array_slice = Array.prototype.slice;
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
7 var function_call = Function.prototype.call;
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
8 var function_apply = Function.prototype.apply;
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
9
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
10 var arguments_to_array = function(args){
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
11
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
12 return array_slice.call(args);
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
13 };
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
14
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
15
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
16 (function()
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
17 {
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
18 var args = (function(){return arguments;})(0,1,2,3);
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
19 '' + args === '[object Object]' || ddt();
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
20 '' + arguments_to_array(args) === '0,1,2,3' || ddt();
d641e504a820 call-apply.js: New file. Added arguments_to_array().
Jonathan Fine <jfine@pytex.org>
parents:
diff changeset
21 })();
80
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
22
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
23
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
24 var return_this = function(){return this;};
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
25 var global = return_this();
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
26
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
27 var isthisable = function(obj){
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
28
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
29 return return_this(obj) === global;
48305b89a155 call-apply.js: Added return_this() and isthisable().
Jonathan Fine <jfine@pytex.org>
parents: 79
diff changeset
30 };