Reactjs Access类方法在类外部,但在同一文件中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Reactjs Access类方法在类外部,但在同一文件中相关的知识,希望对你有一定的参考价值。

我有这段代码,并想访问AssetsMap数组中类之外的类方法。

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import getQueryString from "./tools";

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background.jpg']
]);

class AssetsManager 

    constructor...

    getConfigValue(key, defaultValue)  ... 



如果我尝试在地图数组内部访问getConfigValue方法,诸如此类

[AssetsEnum.background, 'common/background'+this.getConfigValue()+'.jpg']

控制台抛出未定义getConfigValue的错误。我应该如何使用该方法?

答案

您无法使用getConfigValue()关键字在类外访问this方法。尝试将Map放入类中。

另一答案

为了能够访问类方法,您将需要对类实例的引用。例如:

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import getQueryString from "./tools";

class AssetsManager 

    constructor...

    getConfigValue(key, defaultValue)  ... 



const manager = new AssetsManager();

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background' + manager.getConfigValue() + '.jpg']
]);

如果getConfigValue方法不使用AssetsManager类中的属性,则也可以将方法设为static。这样就可以在没有类实例的情况下使用此方法。

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import getQueryString from "./tools";

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background' + AssetsManager.getConfigValue() + '.jpg']
]);

class AssetsManager 

    constructor...

    static getConfigValue(key, defaultValue)  ... 


以上是关于Reactjs Access类方法在类外部,但在同一文件中的主要内容,如果未能解决你的问题,请参考以下文章

无法在 AppDelegate 中初始化委托,但在类方法中它可以工作

静态内部类定义在类中,任何方法外,用static定义

php 类 属性和方法的关系

单例模式(Singleton)

如何在类内部定义枚举并从外部使用它

类属性与方法(待补充)