Javascript Function.prototype.call不使用提供的上下文调用方法

Javascript Function.prototype.call不使用提供的上下文调用方法,javascript,function.prototype,Javascript,Function.prototype,输出:名称:Tom和Id 1(为什么) 我认为ud.getData.调用(userData)会在调用函数时将this设置为userData,但这不会发生 箭头函数没有自己的this,它们总是关闭定义它们的this,因此它们将忽略由调用方式指定的任何this(无论是否通过调用或应用).箭头函数没有自己的this,它们总是关闭定义它们的this,因此它们将忽略任何由调用方式指定的this(无论是否通过调用或应用使用常规函数: var userData={ id:2, 姓名:“蒂姆” } 函数Use

输出:名称:Tom和Id 1(为什么)

我认为ud.getData.调用(userData)会在调用函数时将this设置为userData,但这不会发生


箭头函数没有自己的
this
,它们总是关闭定义它们的
this
,因此它们将忽略由调用方式指定的任何
this
(无论是否通过
调用
应用
).

箭头函数没有自己的
this
,它们总是关闭定义它们的
this
,因此它们将忽略任何由调用方式指定的
this
(无论是否通过
调用
应用
使用常规函数:

var userData={
id:2,
姓名:“蒂姆”
}
函数Userdata(id、名称){
this.id=id;
this.name=名称;
this.getData=函数(){
console.log('Name:'+this.Name+'和Id'+this.Id)
};
}
var ud=新用户数据(1,'Tom');

ud.getData.call(userData)使用常规函数:

var userData={
id:2,
姓名:“蒂姆”
}
函数Userdata(id、名称){
this.id=id;
this.name=名称;
this.getData=函数(){
console.log('Name:'+this.Name+'和Id'+this.Id)
};
}
var ud=新用户数据(1,'Tom');

ud.getData.call(userData)那么这是一种使用es6新语法的bug修复(上下文绑定)吗?还是其他特殊原因?@ManasviSareen:这是arrow函数的目的,它使创建一个函数来关闭
这个
(和
参数
超级
)变得容易,而不是为它们创建自己的绑定。如果不需要该功能,请改用
函数
或方法语法。(方法语法不适用于您的代码片段。)那么这是一种使用es6新语法的bug修复(上下文绑定)吗?还是其他特殊原因?@ManasviSareen:这是arrow函数的目的,它使创建一个函数来关闭
这个
(和
参数
超级
)变得容易,而不是为它们创建自己的绑定。如果不需要该功能,请改用
函数
或方法语法。(方法语法不适用于您的代码段。)
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);