Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #29069
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: Scope of "this" variable |
| Date | 2015-12-30 00:35 +0100 |
| Organization | PointedEars Software (PES) |
| Message-ID | <4114182.jsOz3Ienk7@PointedEars.de> (permalink) |
| References | <87ziwtqc9t.fsf@mithlond.arda> <n5uugv$fpe$1@speranza.aioe.org> |
Joao Rodrigues wrote:
> On 29/12/2015 17:34, Teemu Likonen wrote:
>> var Item = function() {
>> this.variable = "variable";
>> this.fn1 = function() { return this.variable; };
>> this.foo = {
>> fn2: function() { return this.variable; }
> ^^^^^^
> Here, 'this.variable' means 'foo.variable',
No, it does not.
> but there isn't such identifier in foo,
Your wording is imprecise at best. There is no “foo”, and this has nothing
to do with identifiers. “this.foo” in the direct execution context of Item
is a reference to an object. That object does not have a property with the
name “variable”.
> so 'this.variable' will return undefined, according
> to the ECMAScript 5.1, $ 8.7 - The Reference Specification Type.
_§_, and irrelevant.
> Also see $ 10.3.1, 11.1.1 and 11.1.2:
_§§_, and irrelevant.
> <http://ecma-international.org/ecma-262/5.1/>
The relevant section there is <http://ecma-international.org/ecma-262/5.1/#sec-11.2.1>
> But if you add a line with "this.foo.variable = 'variable2'", then the
> property reference will work fine:
It is not a property reference, but a property _access_.
>> var Item = function() {
>> this.variable = "variable";
>> this.fn1 = function() { return this.variable; };
>> var this_object = this;
>> this.foo = {
>> fn2: function() { return this_object.variable; }
> ^^^^^^^^^^^^
>
> Oops, this is something else, not a workaround, as this_object
> references Item.variable, not foo.variable as in the previous case.
Nonsense.
> IMO, "Kangax" wrote a masterpiece about the 'this' keyword in
> ECMAScript. You may want to take a look:
> <http://perfectionkills.com/know-thy-reference/>
Unless you have your misconceptions from there, go read it.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Scope of "this" variable Teemu Likonen <tlikonen@iki.fi> - 2015-12-29 21:34 +0200
Re: Scope of "this" variable Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-12-29 20:47 +0000
Re: Scope of "this" variable Teemu Likonen <tlikonen@iki.fi> - 2015-12-30 10:57 +0200
Re: Scope of "this" variable Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-29 22:09 +0100
Re: Scope of "this" variable Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-12-29 19:38 -0200
Re: Scope of "this" variable Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-12-29 19:46 -0200
Re: Scope of "this" variable Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-30 00:42 +0100
Re: Scope of "this" variable Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-12-30 00:35 +0100
Re: Scope of "this" variable Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-12-30 02:18 -0200
csiph-web