而不是 function(){} 的实现感到困惑, 你愿意解释一下这个行为吗:谢谢 const obj = { prop :-6ren">
gpt4 book ai didi

javascript - Javascript 对象方法上的 "this"

转载 作者:行者123 更新时间:2023-12-01 16:09:53 24 4
gpt4 key购买 nike

我对 This 上的 javascript 对象方法以及 ()=> 而不是 function(){} 的实现感到困惑,

你愿意解释一下这个行为吗:谢谢

const obj = {

prop : 123,

test : function (){
console.log(this.prop);
},

test2 : ()=>{
console.log(this.prop);
},
}

console.log(test()); //results to 123
console.log(test2()); //results to undefined

最佳答案

当您调用记录该对象 (obj.prop) 属性的 obj.test() 时,“this”关键字指的是对象上下文。使用 ES6 中引入的新方法语法,我们可以省略冒号和函数关键字。

const obj = {
prop : 123,
test(){
console.log(this.prop);
},
test2: () => {
console.log(this.prop);
}
}

obj.test(); //123
obj.test2(); //undefined

如果我们在方法中使用“this”关键字,那么“this”的值就是调用对象。箭头函数固有地将一个已经定义的“this”值绑定(bind)到不是调用对象的函数本身。在上面的代码片段中,'this' 的值是全局对象,或者存在于全局范围内的对象,它没有 'prop' 属性,因此返回 undefined。

关于javascript - Javascript 对象方法上的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63096148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com