JavaScript の bind って引数も bind できる
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ bind の2つめ以降の引数は bind する関数の引数として bind される
◆ ライブドアブログの編集画面で上書きしてる bind メソッドにバグある
◆ ライブドアブログの編集画面で上書きしてる bind メソッドにバグある
var plus = (a,b)=>a+b
var plus10 = plus.bind(null, 10)
console.log(plus10(90)) // 100
var plus10 = plus.bind(null, 10)
console.log(plus10(90)) // 100
こういう事ができます
bind の第一引数は知っての通り 関数を実行するときの this の値ですが それ以降の引数は 関数の引数になります
足りない分が bind された関数を実行するときに渡す引数になります
別ブラウザで試して動かなくて なんで? と思ったらその試したページでは Funciton.prototype.bind が書き換えられてました
このブログ編集画面です
なぜそんなことをって思ったのですが 動きは特に変わったことしてるわけじゃないので昔の IE でも使えるようにするためみたいです
関数のある Chrome などでも上書きしてるようです
bind: function () {
var self = this, args = Array.from( arguments ), bindObj = args.shift();
return function () {
self.apply(bindObj, args.concat( Array.from( arguments ) ));
}
}
var self = this, args = Array.from( arguments ), bindObj = args.shift();
return function () {
self.apply(bindObj, args.concat( Array.from( arguments ) ));
}
}
中身は↑でほとんど本物と同じ動きをしますが 返す関数で self.apply に return が抜けてます
そのせいで bind された関数の返り値を受け取ることができないです