我试图理解为什么.bind()
从函数中删除自定义属性。
当我更改“删除”_$something
方法的函数的上下文时实际发生了什么?
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
答案 0 :(得分:5)
ViewSuper
不删除任何内容,它会返回新函数。
来自the MDN:
bind()方法创建一个新函数,当被调用时,它具有它 此关键字设置为提供的值,具有给定的序列 调用新函数时提供的任何参数。
使其更加明显:
foreach my $reportFile (sort { getDateInName($b) <=> getDateInName($a)} @ReportFiles)
{
my @fileData = readFile($reportFile);
if(!@fileData)
{
outputLog("FAIL: File Doesnt Contain Any Data.");
return;
}
}
大致相当于
bind
在这两种情况下,原始功能都不会被复制,但包裹。