Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,如何检查以前是否加载了类?_Javascript - Fatal编程技术网

在Javascript中,如何检查以前是否加载了类?

在Javascript中,如何检查以前是否加载了类?,javascript,Javascript,我使用ajax加载一个JS类 所以这个方法将获取Car作为类名并加载它 function loadClass(className ){ $.ajax({ url: className +".js", dataType: "script", success: success }); } 例如,js可以包含 class Car { constructor(brand) { this.carname = brand; } } 我如何检查类是否已加载,因为多次运行函数将

我使用ajax加载一个JS类

所以这个方法将获取Car作为类名并加载它

function loadClass(className ){
$.ajax({
  url: className +".js",
  dataType: "script",
  success: success
});
}
例如,js可以包含

class Car {
  constructor(brand) {
    this.carname = brand;
  }
 }
我如何检查类是否已加载,因为多次运行函数将导致:

SyntaxError: redeclaration of let Car

检查类名是否定义为全局变量

函数装入类(类名){
if(窗口的类型[className]=“未定义”){
$.getScript(className+“.js”,成功)
}

}
您可以使用几种方法。您可以为loadClass编写一个decorator函数,该函数将“记住”已加载的类:

function runFnJustOnce(fn) {
    let memory = {};

    return function(...args) {

        let key = JSON.stringify(args);

        if (!memory[key]) {
            memory[key] = fn(...args) || true;
        }

        return memory[key];
    }
}

function loadClass(className ){
    $.ajax({
        url: className +".js",
        dataType: "script",
        success: success
    });
}

loadClass = runFnJustOnce(loadClass);
或者更简单的东西,比如:

let { Car } = window;
Car || loadClass("Car");

typeof Car === undefined ? loadClass(Car) : "Already loaded";
或:

或:

或:


或者许多其他方法…

className
的值保存到一个数组中,然后在发出请求之前检查它是否在数组中…这是我的最后一个选择,如果定义了
window.Car
,我确信有一种方法可以尝试实例化它或查找它。是否更好:
if(typeof window[className]=='undefined')
?是的,更改后的软件工作正常,但我会接受另一个回复,因为它有更多选项,谢谢Barmar!
typeof Car === undefined ? loadClass(Car) : "Already loaded";
let className = "Car";
window[className] ? "Already loaded" : loadClass(className);
try {
    {[Car]:Car}
    //Already loaded;
} catch (e) {
    loadClass("Car");
}