トップページ > プログラム > 2016年12月23日 > VeLH/y/da

書き込み順位&時間帯一覧

25 位/200 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000200000000000000002



使用した名前一覧書き込んだスレッド一覧
543 (アウアウウー Sa5f-t+3N)
+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net

書き込みレス一覧

+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net
582 :543 (アウアウウー Sa5f-t+3N)[sage]:2016/12/23(金) 07:21:32.58 ID:VeLH/y/da
>543はES5の範疇でどこまでやれるかやってみた程度のもの
ES6ではspread operatorという答えが出ていたので質問者が自己判断できる範疇と考えていた

>>553,579
ES5では無理、ES6ならすでに提案されているようにspread operatorを利用可能
ただし、Function.prototype 上に関数を置くと呼び出し元関数(print)の this 値が変化してしまう

Object.defineProperty(Function.prototype, 'spread', {
 configurable: true,
 enumerable: false,
 writable: true,
 value: function spread (args) { this(...args); }
});

var obj = {msg: "hoge", print: function(a,b){console.log(a+this.msg+b);}};
obj.print.spread(["(", ")"]); // (undefined)

this 値を渡す方法がないのであなたの要件は実装不可能
素直に呼び出し側で spread operator を使うべき
# ちなみに、Object.prototype, Function.prototype を拡張するのがデメリットを享受したうえで使うなら止めようとは思わない
# 俺は拡張しようとは思わないが、デメリットを承知の上で使う事情があるならそれもまた良いだろう(勿論、チーム内で合意を取る必要はある)
+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net
583 :543 (アウアウウー Sa5f-t+3N)[sage]:2016/12/23(金) 07:41:04.49 ID:VeLH/y/da
> 素直に呼び出し側で spread operator を使うべき
一応、書いておく

var obj = {msg: "hoge", print: function(a,b){console.log(a+this.msg+b);}};
obj.print(...["(", ")"]); // "(hoge)"


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。