首页 > 解决方案 > JavaScript OOP 的问题

问题描述

我目前正在学习 JavaScript 面向对象编程,似乎遇到了一个我无法通过谷歌搜索解决的问题,所以我将尝试堆栈溢出,尽管我很少在论坛上提问。

无论如何,在尝试将一些旧的非 OOP 代码转换为 OOP 代码后,我在玩函数时遇到了错误。请注意,可能有比我要询问的错误更多的错误,所以不要相信下面的任何代码。我得到的错误是 Uncaught TypeError: Cannot read property fadeInAnimationsof undefined。

此外,非常感谢所有改进此代码的建议。

let mainSection = {
    msTime : 0,

    fadeInAnimation : ((element, delayTime) => {
        $(element).delay(delayTime).fadeIn(1000)
    }),

    mainPageElements : [`.traninigTimes`, `.registration`, `.trainingFee`].forEach((element) => {
        this.fadeInAnimation.fadeInAnimations(element, this.msTime)
        this.msTime += 1000;
    })
};

标签: javascript

解决方案


这个上下文在 forEach 回调中是不同的。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

在回调中 this 指的是回调上下文。

let mainSection = {
    msTime : 0,

    fadeInAnimation : ((element, delayTime) => {
        $(element).delay(delayTime).fadeIn(1000)
    }),

    mainPageElements : [`.traninigTimes`, `.registration`, `.trainingFee`].forEach(((element) => {
        this.fadeInAnimation.fadeInAnimations(element, this.msTime)
        this.msTime += 1000;
    }).bind(this))
};

推荐阅读