$.proxy()
这个方法很多新人不知道用,所以我举个例子。
我曾经遇到过这样的问题:
var obj = {
name: 'test',
fn: function() {
console.log(this.name);
}
};
setTimeout(obj.fn, 100);
返回值是 undefined,并非我想要的'test', 因为setTimeout执行callback的时候,指向的this是window对象,这时候 proxy就体现出神奇之处了。
var obj = {
name: 'test',
fn: function() {
console.log(this.name);
}
};
setTimeout($.proxy(obj.fn, obj), 100);
这样就可以了,相当于给obj.fn强制this===obj。
额,感觉到高手嘘声一片了。。。 我承认这层楼有点水。