Mercurial > js4py
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 |
| 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 }; |
