Javascript Function.prototype.call不使用提供的上下文调用方法
输出:名称:Tom和Id 1(为什么) 我认为ud.getData.调用(userData)会在调用函数时将this设置为userData,但这不会发生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
箭头函数没有自己的
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);