.bind()
がカスタムプロパティを機能から削除する理由を理解しようとしています。 _$something
メソッドを「削除」する関数のコンテキストを変更すると、実際にはどうなりますか?なぜFunction.prototype.bind()は関数からカスタムプロパティを削除するのですか?
function xxx(){
//do nothing
}
xxx._$something = 'something';
document.getElementById('id1').innerText = xxx._$something;
//'something'
var functions = [];
functions.push(xxx);
document.getElementById('id2').innerText = functions[0]._$something;
//'something'
functions.push(xxx.bind({}));
document.getElementById('id3').innerText = functions[1]._$something;
//'undefined'
console.log(functions[1]); //logs xxx
'bind()'は新しい関数を返します。なぜそれはそれに任意のプロパティを持っていますか? –
バインドがオブジェクト(関数)のコピーを返す場合、同じプロパティを持つと期待します。 –
オブジェクトのコピーを返しません。それは目標ではありません。 –