<div dir="ltr">Assignment to a super properly definitely has its uses, in the same way that calling a super method does, though definitely less common. Consider an example where a subclass wants to override a parent class&#39;s accessor property:<div><br></div><div>```</div><div>class Parent {<br>  get prop(){<br>    return this._prop;<br>  }</div><div>  set prop(val){<br>    this._prop = val;<br>  }<br>}</div><div><div><br class="">class Child extends Parent {<br>  get prop(){<br>    return super.prop.slice(&#39;prefix&#39;.length);<br>  }</div><div>  set prop(val){<br>    super.prop = &#39;prefix&#39; + val;<br>  }<br>}</div></div><div><br></div><div>```</div><div><br></div><div>Unless the child class wants to (and is able to) duplicate the parent classes logic, or manually trigger the parent getter and setter functions, assigning to the super accessor is the only approach.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 19, 2016 at 7:20 PM, ziyunfei <span dir="ltr">&lt;<a href="mailto:446240525@qq.com" target="_blank">446240525@qq.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Today I saw a V8 test case [1] which took me a long time to figure out why it runs like this:<br>
<br>
class Test {<br>
  m() {<br>
    super.length = 10;    // `super.length&#39; here has the same effect as `this.length&#39;<br>
    console.log(super.length);    // but `super.length&#39; here is `Test.prototype.__proto__.length&#39; (i.e. `Object.prototype.length&#39;) which still remains `undefined&#39;<br>
  }<br>
}<br>
var array = [];<br>
Test.prototype.m.call(array);<br>
assertEquals(10, array.length);<br>
<br>
This syntax is so confusing and I couldn&#39;t think of any real use case for it, so should we make `SuperProperty = AssignmentExpression&#39; an early error?<br>
<br>
Also, I found an old es-bug thread [2] discussed about this.<br>
<br>
[1] <a href="https://chromium.googlesource.com/v8/v8/+/77e30f013a221527bb4ab955188aec44f10fee7f/test/mjsunit/es6/classes-super.js" rel="noreferrer" target="_blank">https://chromium.googlesource.com/v8/v8/+/77e30f013a221527bb4ab955188aec44f10fee7f/test/mjsunit/es6/classes-super.js</a><br>
<br>
[2] <a href="https://bugs.ecmascript.org/show_bug.cgi?id=3246" rel="noreferrer" target="_blank">https://bugs.ecmascript.org/show_bug.cgi?id=3246</a><br>
<br>
<br>
<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div><br></div>