当我想在greet方法中访问fullname时,我得到:typeerror:this.getfullname不是一个函数,我如何修复它?提前谢谢

r3i60tvu  于 2021-09-23  发布在  Java
关注(0)|答案(3)|浏览(325)

此问题已在此处找到答案

es6对象中的方法:使用箭头函数(6个答案)
“箭头功能”和“功能”是否等效/可互换((3个答案)
“this”关键字是如何工作的((21个答案)
两天前关门了。

let greetings = {
    fullName : "elham zeinodini",
    getFullName : () => {
        return this.fullName;
    },
    Greet : message => console.log(`${message} ${this.getFullName()} !!`)
}

console.log(greetings.fullName);

greetings.Greet("Hello");
67up9zun

67up9zun1#

let greetings = {
    fullName : "elham zeinodini",
    getFullName() {
        return this.fullName;
    },
    Greet(message) {
      console.log(`${message} ${this.getFullName()} !!`)
    }
}
console.log(greetings.fullName);
greetings.Greet("Hello");
lskq00tm

lskq00tm2#

从字面上说,这意味着 getFullName 论语境 this 这不是一个函数。您试图调用的不是函数的东西。
为什么呢?因为你不能使用 this 就像使用箭头函数引用周围的对象一样。根据您的环境,它可能引用窗口对象(在浏览器中)。窗口对象没有调用的函数 getFullName . 因此该属性的计算结果为 undefined . 它不是一个函数,因此是错误的。
改用“常规”函数声明。 getFullName: function() {...}

wlzqhblo

wlzqhblo3#

问题在于您的箭头函数,它不允许您捕获 this 上下文
改写如下:

let greetings = {
    fullName : "elham zeinodini",
    getFullName() {
        return this.fullName;
    },
    Greet(message){ 
        console.log(`${message} ${this.getFullName()} !!`)
    }
}

console.log(greetings.fullName);

greetings.Greet("Hello");

相关问题