var userData = {
id: 2,
name: 'Tim'
}
function Userdata( id, name) {
this.id = id;
this.name = name;
this.getData = () => {
console.log('Name: ' + this.name + ' and Id ' + this.id )
}
}
var ud = new Userdata(1, 'Tom');
ud.getData.call(userData);
输出:姓名:Tom和Id 1(为什么)
我虽然ud.getData。调用(userData)会在调用函数时将其设置为userData,但这不会发生。
答案 0 :(得分:4)
箭头功能没有自己的this
,他们始终靠近他们定义的this
,因此他们可以使用#{1}}。将忽略他们被调用的方式指定的任何this
(无论是通过call
还是apply
)。
答案 1 :(得分:1)
使用常规功能:
var userData = {
id: 2,
name: 'Tim'
}
function Userdata(id, name) {
this.id = id;
this.name = name;
this.getData = function() {
console.log('Name: ' + this.name + ' and Id ' + this.id)
};
}
var ud = new Userdata(1, 'Tom');
ud.getData.call(userData);