<div dir="ltr"><div>What if you used a target parameter to indicate assignment?</div><div><br></div><div>```js</div><div>operator +(a, b, target = new obj()) {</div><div>  target.val = a.val + b.val;</div><div>  return target;</div><div>}</div><div><br></div><div>// or... no arrow functions...</div><div><br></div><div><div>operator +(other, target = new obj()) {</div><div>  target.val = this.val + other.val;</div><div>  return target;</div><div>}</div></div><div><br></div><div>// or... just a boolean</div><div><br></div><div><div>operator +(other, assign) {</div><div>  let target = assign ? this : new obj();</div><div>  target.val = this.val + other.val;</div><div>  return target;</div><div>}</div></div><div>```</div><div><br></div><div>And throw a TypeError if an assignment does not return the same object.</div></div>