Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #27921
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: Expression for the global object |
| Date | 2015-05-29 14:57 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <87382fmqoq.fsf@bsb.me.uk> (permalink) |
| References | (2 earlier) <cspehuFliqhU1@mid.uni-berlin.de> <5567f976$0$12987$c3e8da3$5496439d@news.astraweb.com> <87k2vrmxr4.fsf@bsb.me.uk> <15438118.NDL39TPNyL@PointedEars.de> <55685287$0$13007$c3e8da3$5496439d@news.astraweb.com> |
Steven D'Aprano <steve@pearwood.info> writes:
> On Fri, 29 May 2015 09:33 pm, Thomas 'PointedEars' Lahn wrote:
>
>> Ben Bacarisse wrote:
>>
>>> […] I think
>>> you can get a reference to the global object in any execution context
>>> using the rather convoluted
>>>
>>> (function () { return this; }).call(null)
>>>
>>> expression.
<snip>
>>> This works because a null value for 'this' is replaced by the global
>>> object when entering function code (10.4.3)., though the twisty passages
>>> of the standard always leave me a little unsure about corner cases.
>>
>> AISB, in strict mode this function returns the “undefined” value.
Thanks for pointing that out. I would offer, instead,
Function("{return this;}").call(null)
but it does not solve the original problem as the the identifier
'Function' is as unreliable as the original 'Math'. (The same is true
of my original suggestion in that the call property might have been
changed.)
> It seems to work in Rhino:
>
> [steve@ando ~]$ rhino -strict
> Rhino 1.7 release 0.7.r2.3.el5_6 2011 05 04
> js> (function () { return this; }).call(null)
> [object global]
Yes, but rhino is rather old and, I think, follows version 3 of the
language standard. The behaviour of a null 'this' changed between
versions and I think this accounts for difference in strict mode.
(Installing nodejs will give you a much more up-to-date ES environment,
and one with very may more library modules.)
<snip>
--
Ben.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: Expression for the global object "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2015-05-28 13:49 -0700
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-28 22:59 +0200
Re: Expression for the global object "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2015-05-29 07:24 -0700
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-29 17:24 +0200
Re: Expression for the global object "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2015-05-30 06:07 -0700
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-30 15:20 +0200
Re: Expression for the global object Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-05-30 11:23 -0300
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-30 19:05 +0200
Re: Expression for the global object Steven D'Aprano <steve@pearwood.info> - 2015-05-29 15:30 +1000
Re: Expression for the global object Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-05-29 12:25 +0100
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-29 13:33 +0200
Re: Expression for the global object Steven D'Aprano <steve@pearwood.info> - 2015-05-29 21:50 +1000
Re: Expression for the global object Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-05-29 14:57 +0100
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-31 16:18 +0200
Re: Expression for the global object "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2015-05-29 07:31 -0700
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-30 15:25 +0200
Re: Expression for the global object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-30 18:56 +0200
csiph-web