javascript - How should I think of property definitions in object literals? -
let o = { x: 1, foo() { settimeout(()=> console.log(this.x), 100); } } o.foo(); this prints out 1 after 100ms.
is because equivalent following, meaning lexical this binding of arrow functions works?
let o = new (function object() { this.x = 1; this.foo = ()=> console.log(this.x); }); o.foo();
is because equivalent following, meaning lexical binding of arrow functions works?
no, it's simpler that. it's equivalent to
var o = { x: 1, foo: function() { settimeout(()=> console.log(this.x), 100); } }; o.foo(); and arrow function converted:
var o = { x: 1, foo: function() { var self = this; settimeout(function() { console.log(self.x) }, 100); } }; o.foo(); since calling o.foo(), this inside foo refers o. because arrow function's this subject lexical scope, access foo's this.
Comments
Post a Comment