blog

バインドの実装をシミュレートする方法

bind がコールされると、新しい関数の this が bind の最初の引数として指定されます。...

Mar 17, 2020 · 1 min. read
シェア

バインド実装のシミュレーション方法

bind() 関数は新しい関数を作成します。bind() がコールされると、 bind の最初のパラメータとして新しい関数の this が指定され、 その他のパラメータは新しい関数のパラメータとして使用されます。

バインドとは何ですか?

通常の関数が thisポインタを変更する場合。

コンストラクタがプロトタイプのプロパティとメソッドを取得するため。

bind

バインディング関数の作成

var x = 10
var model = {
 x: 100,
 getX: function () {
 console.log(this.x)
 return this.x
 }
}
model.getX()// 100
var getX = model.getX
getX() // 10 この時点で thisはウィンドウを実行する。
var newGetX = getX.bind(model)
newGetX() // 100

機能の迅速な使用

var unboundSlice = Array.prototype.slice
var slice = Function.prototype.apply.bind(unboundSlice)
function aa(1,2,3) {
 console.log(arguments)
 slice(arguments)
}

bind

Function.prototype.bind = function(conext, ...args) {
 var self = this
 var fNOP = function () {}
 // 高階関数は関数を返す
 var fbound = function() {
 // 実行中に thisのポイントを変更する
 self.apply(this instanceof self ? this : context,
 args.concat(Array.prototype.slice.call(arguments)))
 }
 fNOP.prototype = this.prototype
 fbounf.prototype = new fNOP()
 return fbound
}
Read next

Node-sassがインストールできない、エラーピット

Node-sassは、Node.jsとLibSassをバインドするライブラリです。.scssファイルを信じられないスピードでネイティブにcssにコンパイルしたり、ミドルウェアに接続してコンパイルを自動化したりすることができます。 基本的にはあまり使っていなかったのですが、今日sassのプロジェクトを引っ張り出してきてインストールしたところ、すぐに爆速になりました...。

Mar 16, 2020 · 1 min read

製品を見る

Mar 16, 2020 · 2 min read

基本的なvimのドキュメント

Mar 13, 2020 · 4 min read

最も長い公開接頭辞

Mar 13, 2020 · 2 min read