मेरे पास यह कोड है और मैं एसेटमैप सरणी में कक्षा के बाहर एक वर्ग विधि का उपयोग करना चाहता हूं।

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 परिभाषित नहीं है। मुझे विधि तक कैसे पहुंचना चाहिए?

0
Taimur Saeed 20 फरवरी 2020, 13:03
आप कंस्ट्रक्टर के अंदर AssetsMap घोषित क्यों नहीं करते?
 – 
atadnmz
20 फरवरी 2020, 13:25

2 जवाब

क्लास मेथड को एक्सेस करने में सक्षम होने के लिए, आपको क्लास इंस्टेंस का रेफरेंस रखना होगा। उदा.

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 मेथड एसेट्समैनेजर क्लास के प्रॉपर्टीज का उपयोग नहीं करता है, तो आप मेथड 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) { ... }

}
1
Chris 20 फरवरी 2020, 13:27
अच्छी तरह से मुझे const manager = new AssetsManager(); के साथ ऑब्जेक्ट बनाने का प्रयास करते समय AssetsManager is not a constructor त्रुटि मिलती है
 – 
Taimur Saeed
20 फरवरी 2020, 14:30
क्या AssetsManager परिभाषित या आयात किया गया है जहां आप कक्षा को तत्काल कर रहे हैं?
 – 
Chris
21 फरवरी 2020, 13:08

आप getConfigValue() विधि को कक्षा के बाहर this कीवर्ड से एक्सेस नहीं कर सकते। अपना नक्शा कक्षा के अंदर डालने का प्रयास करें।

0
nadunc 20 फरवरी 2020, 13:27