想问原 PO 为什么要在建构函式 a 里再 this.OuO.apply把 OuO 方法定义在 prototype 上就不用再定义一次物件实体自己的 OuO 了。而且 ES6 Class 定义的方法等同于定义在 prototype 上:a.prototype.OuO所以原 PO 的 class a 会等同于只把 OuO 定义在原型上的 function a。而 for-in 只会迭代 enumerable 属性但 class method 是 non-enumerable 的如果原 PO 想和你第一个 function a 一样定义物件实体的 OuO 方法,也可以在 ES6 Class 的 constructor 里这样写:this.OuO = this.OuO.apply(this, ...args)
https://codepen.io/anon/pen/RMGYXM?editors=0012只是这样和 function a 里再 this.OuO.apply 一样怪 XD我发现我有一些没说清楚的地方 Orz,已经回一篇来说了