class Point {
 var x = 0;
 var y = 0;
 distance(other) {
   return Math.sqrt(x * other.x + y * other.y);
 }
}

it is very tempting to think that var x and var y are in scope.

Would the following analogy with modules help?

Think of 'this' as - the export object of the constructor method
   - an import object of all methods.

Then one might want nice syntax for moving between local
bindings and import/export objects, without risks to lexical
scoping. Which is the same problem modules have, isn't it?

Could one use punning ({x} standing for {x=x}), destructuring, and returning 'this'?

   distance(other) {
       let {x,y} = this;    // import
       return Math.sqrt(x * other.x + y * other.y);
   }

   constructor(x,y) {
       return {x,y};    // export
   }

To enable further code between 'this' initialization and constructor
return, might one permit assignment to 'this'?

   constructor(x,y) {
       this = {x,y};    // partial export
       // more setup code
   } // defaults to returning 'this'

Not taking sides, just wanted to mention the analogy..

Claus
http://clausreinke.github.com/

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to