Javascript 在js中提供嵌套函数的引用

Javascript 在js中提供嵌套函数的引用,javascript,html,Javascript,Html,我想提供第二个js中第一个js函数的参考。我知道单个函数和传递变量等。但是,如何在另一个函数中引用函数 HTML 在这个特定的示例中,您将需要通过新应用程序(或类似程序)创建一个对象,该对象上将有onClickNext,作为继承属性。例如,如果您从变量app引用了该对象,则: document.addEventListener('swiped-left', function(e) { app.onClickNext(); //Call function here

我想提供第二个js中第一个js函数的参考。我知道单个函数和传递变量等。但是,如何在另一个函数中引用函数

HTML


在这个特定的示例中,您将需要通过
新应用程序
(或类似程序)创建一个对象,该对象上将有
onClickNext
,作为继承属性。例如,如果您从变量
app
引用了该对象,则:

document.addEventListener('swiped-left', function(e) {
   
        app.onClickNext(); //Call function here

    // ...
});

该函数也可以作为
Application.prototype.onClickNext
访问,但它显然是作为一种方法使用的,而不是直接使用的。(从技术上讲,对于您展示的代码,如果您直接调用它,它会工作,但是我假设
GotonNext
的内容比
控制台.log
更复杂。在任何情况下,如果不提供有效的
this
来使用,直接调用
应用程序.prototype.onClickNext
都是非常糟糕的做法。)

在这个特定的示例中,您需要通过
新应用程序(或类似应用程序)创建一个对象,该对象上的
onClickNext
将作为继承属性。例如,如果您从变量
app
引用了该对象,则:

document.addEventListener('swiped-left', function(e) {
   
        app.onClickNext(); //Call function here

    // ...
});

该函数也可以作为
Application.prototype.onClickNext
访问,但它显然是作为一种方法使用的,而不是直接使用的。(从技术上讲,对于您展示的代码,如果您直接调用它,它会工作,但是我假设
GotonNext
的内容比
控制台.log
更复杂。在任何情况下,如果不提供有效的
this
来使用,直接调用
应用程序.prototype.onClickNext
都是非常糟糕的做法。)

将引用附加到全局对象(在浏览器中是
窗口

在下面的代码中,我将
var instance
更改为
window.instance
。这允许您使用
window.instance.onClickNext()

//scripts.js
addEventListener(“加载”,函数(){
var elements=Utility.toArray(document.querySelectorAll(Utility.selector(“应用”));
对于(var i=0;i
将引用附加到全局对象(在浏览器中是
窗口

在下面的代码中,我将
var instance
更改为
window.instance
。这允许您使用
window.instance.onClickNext()

//scripts.js
addEventListener(“加载”,函数(){
var elements=Utility.toArray(document.querySelectorAll(Utility.selector(“应用”));
对于(var i=0;i
很抱歉,我没有理解。我到底应该提到什么?是函数还是应用程序原型?你能给我举个例子吗?thanks@Saif-显示您的代码-在哪里创建新的
应用程序
。完美!非常感谢。所以只需将窗口添加到实例中。但这背后有什么原因吗?我的意思是,为什么不直接访问变量实例?@Saif,因为它们位于不同的文件中。文件中的代码不能直接相互对话-
pure swipe.js
hsa不知道在
scripts.js
中声明了哪些变量,但它们是在相同的上下文(全局浏览器上下文)中执行的。因此,只要您在两个文件都可以读取的上下文中提供引用(例如,通过将引用附加到
窗口
对象),那么它们就可以相互“交谈”。很抱歉,我没有遵循它。我到底应该提到什么?是函数还是应用程序原型?你能给我举个例子吗?thanks@Saif-显示您的代码-在哪里创建新的
应用程序
。完美!非常感谢。所以只需将窗口添加到实例中。但这背后有什么原因吗?我的意思是,为什么不直接访问变量实例?@Saif,因为它们位于不同的文件中。文件中的代码不能直接相互对话-
pure swipe.js
hsa不知道在
scripts.js
中声明了哪些变量,但它们是在相同的上下文(全局浏览器上下文)中执行的。因此,只要在两个文件都可以读取的上下文中提供引用(例如,通过将引用附加到
窗口
对象),它们就可以相互“对话”。我尝试了Application.prototype.onClickNext,但没有调用它。由于在应用程序中未定义错误。我尝试了Application.prototype.onClickNext,但没有调用它。如在应用程序中未定义错误。
    document.addEventListener('swiped-left', function(e) {
       
            onClickNext(); //Call function here

        // ...
    });
document.addEventListener('swiped-left', function(e) {
   
        app.onClickNext(); //Call function here

    // ...
});
// scripts.js
window.addEventListener("load", function() {
        var elements = Utility.toArray(document.querySelectorAll(Utility.selector("application")));
        for (var i = 0; i < elements.length; i++) {
            window.instance = new Application(elements[i]);
        }
    });

// pure-swipe.js
document.addEventListener('swiped-left', function(e) {
    window.instance.onClickNext(); //Call function here
});