開始行: * キーワード [#i72a4e02] - JavaScript - prototype * したいこと [#ef33a54d] サーバーから受け取るリストはArrayとして扱える。そこに業務... たとえば、次のように相乗できる配列を作ることを考えてみる。 const org = { __content: [1, 2, 3] }; // または直接 [1, ... const collection = raisableCollectionOf(org); collection.raise().raise(); // [1, 16, 81] * どうやって [#h0c63197] ** コレクションをフィールドにもつなら [#je6c2a14] const org = { __content: [1, 2, 3] }; とする場合。(フロント側ではあんまりやらないかも。) ファーストクラスコレクションの形でデータをもつなら、その... function FirstClassCollection() { this.__content; } FirstClassCollection.prototype.size = function () { return this.__content.length; }; FirstClassCollection.prototype.map = function (...args) { const newCollection = Object.create(Object.getPrototyp... newCollection.__content = this.__content.map(...args); return newCollection; }; function firstClassCollectionOf(target) { Object.setPrototypeOf(target, FirstClassCollection.pro... return target; } function RaisableCollection() { this.__content; } Object.setPrototypeOf(RaisableCollection.prototype, Firs... RaisableCollection.prototype.raise = function() { return this.map(value => value * value) }; function raisableCollectionOf(target) { Object.setPrototypeOf(target, RaisableCollection.proto... return target; } ** コレクションをフィールドにもたなくてもいい [#r608d698] const org = [1, 2, 3]; とする場合。(こちらの方が普通かも。) 表示データとしてはわざわざコレクションをフィールドにもつ... JavaScriptではprototypeチェーンでArrayをラップして関数を... function RaisableCollection() { } Object.setPrototypeOf(RaisableCollection.prototype, Arra... RaisableCollection.prototype.raise = function() { return raisableCollectionOf( this.map(value => value * value) ); }; function raisableCollectionOf(target) { Object.setPrototypeOf(target, RaisableCollection.proto... return target; } * なお書き [#tb4d38cf] - 新しいclassもprototypeのシンタックスシュガーなんだって... * 参考 [#n43aaca9] - [[Object.create() - JavaScript | MDN>https://developer.... - [[Object.setPrototypeOf() - JavaScript | MDN>https://de... 終了行: * キーワード [#i72a4e02] - JavaScript - prototype * したいこと [#ef33a54d] サーバーから受け取るリストはArrayとして扱える。そこに業務... たとえば、次のように相乗できる配列を作ることを考えてみる。 const org = { __content: [1, 2, 3] }; // または直接 [1, ... const collection = raisableCollectionOf(org); collection.raise().raise(); // [1, 16, 81] * どうやって [#h0c63197] ** コレクションをフィールドにもつなら [#je6c2a14] const org = { __content: [1, 2, 3] }; とする場合。(フロント側ではあんまりやらないかも。) ファーストクラスコレクションの形でデータをもつなら、その... function FirstClassCollection() { this.__content; } FirstClassCollection.prototype.size = function () { return this.__content.length; }; FirstClassCollection.prototype.map = function (...args) { const newCollection = Object.create(Object.getPrototyp... newCollection.__content = this.__content.map(...args); return newCollection; }; function firstClassCollectionOf(target) { Object.setPrototypeOf(target, FirstClassCollection.pro... return target; } function RaisableCollection() { this.__content; } Object.setPrototypeOf(RaisableCollection.prototype, Firs... RaisableCollection.prototype.raise = function() { return this.map(value => value * value) }; function raisableCollectionOf(target) { Object.setPrototypeOf(target, RaisableCollection.proto... return target; } ** コレクションをフィールドにもたなくてもいい [#r608d698] const org = [1, 2, 3]; とする場合。(こちらの方が普通かも。) 表示データとしてはわざわざコレクションをフィールドにもつ... JavaScriptではprototypeチェーンでArrayをラップして関数を... function RaisableCollection() { } Object.setPrototypeOf(RaisableCollection.prototype, Arra... RaisableCollection.prototype.raise = function() { return raisableCollectionOf( this.map(value => value * value) ); }; function raisableCollectionOf(target) { Object.setPrototypeOf(target, RaisableCollection.proto... return target; } * なお書き [#tb4d38cf] - 新しいclassもprototypeのシンタックスシュガーなんだって... * 参考 [#n43aaca9] - [[Object.create() - JavaScript | MDN>https://developer.... - [[Object.setPrototypeOf() - JavaScript | MDN>https://de... ページ名: