您的位置:首页 > 其它

普通函数与箭头函数的this

2018-02-03 14:59 176 查看
普通函数:

this指向函数调用时的对象;

function foo() {
return function() {
return function() {
return function(){
console.log('id:', this.id);
};
};
};
}

var id=1;
var f = foo.call({id: 1});
var t1 = f.call({id: 2})()(); // id: 1
var t2 = f().call({id: 3})(); // id: 1
var t3 = f()().call({id: 4}); // id: 4


箭头函数:

箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。

由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。

正是因为它没有this,所以也就不能用作构造函数。

function foo() {
return () => {
return () => {
return () => {
console.log('id:', this.id);
};
};
};
}

var f = foo.call({id: 1});

var t1 = f.call({id: 2})()(); // id: 1
var t2 = f().call({id: 3})(); // id: 1
var t3 = f()().call({id: 4}); // id: 1


上述代码只有一个this,就是foo的this
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: