您的位置:首页 > Web前端 > JavaScript

Javascript:提取 对象的方法作为高阶函数的参数 要注意的

2014-04-30 17:41 549 查看
函数体是谁调用的,this 就指向谁
//提取对象的方法作为函数
var buffer = {
entries:[],
add:function(s) {
this.entries.push(s);
},
concat: function() {
return this.entries.join("");
}
};
function a(fn,a){
fn(a);
}

var f = buffer.add;//提取 add 方法

a(f,"abc"); //出错 。函数f 中的 this 指向的是 global 对象
a(buffer.add,"efg") //出错,这里的 buffer.add 是一个函数 调用这个函数的是 global 对象

console.log(buffer.add === buffer.add.bind(buffer));// false ,记住 buffer.add.bind(buffer) 创建了一个新函数,this指向 buffer

console.log(buffer);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 高阶函数