Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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_Cordova - Fatal编程技术网

Javascript 从其他方法中运行私有方法

Javascript 从其他方法中运行私有方法,javascript,cordova,Javascript,Cordova,我使用以下代码初始化类ReadConfig: var myReadConfig=new ReadConfig() 这可以正常工作,并显示警报(“2”) 之后,我运行语句window.requestFileSystem(…),它调用方法gotFSReader。 但是我从来没有看到警报(“3”)结果 如何在窗口外运行此方法gotFSReader。requestFileSystem(…)?如果我在课堂外运行它,它会完全工作 我的班级: var ReadConfig = function(){

我使用以下代码初始化类ReadConfig

var myReadConfig=new ReadConfig()

这可以正常工作,并显示
警报(“2”)

之后,我运行语句
window.requestFileSystem(…)
,它调用方法
gotFSReader
。 但是我从来没有看到
警报(“3”)结果

如何在
窗口外运行此方法
gotFSReader
。requestFileSystem(…)
?如果我在课堂外运行它,它会完全工作

我的班级:

  var ReadConfig = function(){
        var path = "Zugangsdaten.txt";
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFSReader, failReader);
        alert("2");

        var gotFSReader = function(fileSystem) {
            alert("3");
            fileSystem.root.getFile(path, null, gotFileEntryReader, failReader);

        }

        var gotFileEntryReader = function(fileEntry) {
            fileEntry.file(gotFileReader, failReader);
            alert("4");
        }

        var gotFileReader = function(file){
            readAsText(file);
        }

        var readAsText = function(file) {
            var reader = new FileReader();
            reader.onloadend = function(evt) {
                console.log("Read as text");
                handleLocalPasswort(evt.target.result);
            };
            reader.readAsText(file);
        }

        var failReader = function(evt) {
            console.log(evt.target.error.code);
        }

        var handleLocalPasswort = function(fileStr){
            if(fileStr=="" || fileStr == null){
                return;
            }

            var arrayItems = fileStr.split(";");
            document.getElementById('tb_benutzer').value = arrayItems[0];
            document.getElementById('tb_password').value = arrayItems[1];
            document.getElementById('tb_knr').value = arrayItems[2];
            checkLogin();

        }
    }

您的代码结构不正确。在将值传递给该函数之前,不会初始化该变量(“gotFSReader”)。因此,您传递的是
未定义的
,而不是对函数的引用

在初始化之后,将
窗口.requestFileSystem()调用移动到,或使用函数声明语句声明函数:

    function gotFSReader(fileSystem) {
        alert("3");
        fileSystem.root.getFile(path, null, gotFileEntryReader, failReader);
    }
如果您这样做,它就会工作,因为函数声明语句总是被视为出现在包含函数的开头


变量声明也被挂起,但有一点不同:只有
var
语句的实际声明部分被视为发生在函数的开头。初始化在函数中实际出现
var
的位置完成。因此,在代码中,名为“gotFSReader”的变量在调用
requestFileSystem()
时声明,但尚未初始化。

代码的结构不正确。在将值传递给该函数之前,不会初始化该变量(“gotFSReader”)。因此,您传递的是
未定义的
,而不是对函数的引用

在初始化之后,将
窗口.requestFileSystem()调用移动到,或使用函数声明语句声明函数:

    function gotFSReader(fileSystem) {
        alert("3");
        fileSystem.root.getFile(path, null, gotFileEntryReader, failReader);
    }
如果您这样做,它就会工作,因为函数声明语句总是被视为出现在包含函数的开头


变量声明也被挂起,但有一点不同:只有
var
语句的实际声明部分被视为发生在函数的开头。初始化在函数中实际出现
var
的位置完成。因此,在代码中,名为“gotFSReader”的变量是在调用
requestFileSystem()
时声明的,但它尚未初始化。

如何修复它?我应该写:函数gotFSReader(fileSystem){…?它是面向对象的吗?如果使用函数声明语句,该函数将正常工作。如果出于某种原因不想这样做(在任何情况下它与“面向对象”无关),您可以将该调用移动到
requestFileSystem()
到主函数的底部。如何修复它?我应该写:function gotFSReader(fileSystem){…?它是面向对象的吗?如果您使用函数声明语句,该函数将正常工作。如果您出于某种原因不想这样做(在任何情况下它与“面向对象”无关),您只需将对
requestFileSystem()
的调用移动到主函数的底部即可。