簡體   English   中英

如何在javascript中從同一對象的其他函數的另一個函數調用一個對象的函數?

[英]How to call a function from an object, from within an other function's function of the same object in javascript?

我有一個對象,它簡化了一下:

function obj(arg){
    return{
        fct1: function(){
            $(".output").append("called fct1 with arg: "+arg+"<br>");
        },
        fct2: function(){
            $(".output").append("called fct2, which has an other function, which calls fct1<br>");
            fct2a();
            function fct2a(){
                $(".output").append("doing something else, then calling fct1<br>");
                this.fct1(); //not within scope
            }
        }
        }
    }
var myobj = obj("asd");
myobj.fct2();

我想從fct2a調用fct1,怎么辦? 小提琴

創建一個臨時變量並將this對象分配給該變量並從中調用。 請在下面找到代碼

function obj(arg){
    return{
        var temp=this;
        fct1: function(){
            $(".output").append("called fct1 with arg: "+arg+"<br>");
        },
        fct2: function(){
            $(".output").append("called fct2, which has an other function, which calls fct1<br>");
            fct2a();
            function fct2a(){
                $(".output").append("doing something else, then calling fct1<br>");
                temp.fct1(); 
            }
        }
        }
    }
var myobj = obj("asd");
myobj.fct2();

您還可以分別聲明fct1()並在需要時調用它:

function obj(arg){
    function innerFct1(arg) {
        $(".output").append("called fct1 with arg: "+arg+"<br>");
    }
    return{
        fct1: innerFct1,
        fct2: function(){
            $(".output").append("called fct2, which has an other function, which calls fct1<br>");
            fct2a();
            function fct2a(){
                $(".output").append("doing something else, then calling fct1<br>");
                innerFct1("arg2"); //not within scope
            }
        }
    }
}
var myobj = obj("asd");
myobj.fct2();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM