これは私を逃しています。私はこれを行うことができるようにしたい理由は、次のシナリオのようなものですインスタンスのメソッドに割り当てられた変数のコンテキストを保存します
function tSt(val) {
this.val = val;
}
tSt.func = function(x) {
return x * 2;
}
tSt.prototype.func = function() {
return tSt.func(this.val);
}
var tmp = new tSt(5);
console.log(tmp.func()); // 10
var other = tmp.func;
console.log(other()); // undefined
:
これが達成することができますどのように(function(funcarr) {
for (var i = 0; i < funcarr.length; i++)
console.log(funcarr[i]());
})([ tmp.func ]);
次のコードを取りますか?
更新:
ここでは、潜在的に、よりグローバルなソリューションですが、私はそれをこのように行うのいずれかの欠点があるかどうかわからない:
whoa、それは速かった。その解決策が働く。私の更新を見て、あなたの考えを知ってもらいたいと思いますか? –
更新されたサンプルは動作しますが、 'tSt'のインスタンスごとに別々の' func'プロパティを作成しているので、プロトタイプの継承の利点が失われています。その 'func'はちょうど' tSt.prototype.func'に関連していますが、それは本当に無関係です。新しいインスタンスに固有のプロトタイプに継承された 'func'を呼び出した人はいないでしょう。言い換えれば、あなたのコードは 'this.func =(function(x){return x * 2}).Bind(this);'と同じです。 – Domenic
意味がありますが、other.func.bind(tmp)ではなく 'other.func'を関数のパラメータとして単に渡すことができるようにするには、利益を失うことが必要です。助けてくれてありがとう。 –