簡體   English   中英

JAVASCRIPT:我如何從外部訪問這些 javascript 成員函數?

[英]JAVASCRIPT: How do i access these javascript member functions from outside?

我知道如何訪問下面的成員 function 當它這樣寫時:

var blady_blah=
{
    some_member_function: function ()
    {
    }

}

我從外部訪問它blady_blah.some_member_function()

但是當它這樣寫時,我如何訪問成員 function:

(function() {

    some_member_function: function ()
    {
    }

})();

大括號 { } 用於定義 object 文字和 function 主體。 區別在於:

var name = {};    // Object literal

您可能還會看到寫成

var name = {

};

那是一樣的,但中間有一些空格,所以它仍然是 object 文字,不幸的是它看起來非常類似於:

var name = function () {    // Function body

};

object 可以有成員:

var name = {
  member: "string"
};

而 function 不能; function 有聲明:

var name = function () {
  do_something();
  var result = do_something_else();
};

你不能寫

var name = function () {
  member: "string"
};

因為您將 { } 的兩種用法混合在一起。

可以在ZC1C425268E68385D1AB5074C174F14Z中定義變量,但是在ZC1C42525268E683851AB55074C1717A94F14BES之外看不到它,它在ZC1C11C425268EMEN中。

var name = function () {
  var something_useful = string;
};

第二個例子是一個閉包(它只是碰巧在里面有一個語法錯誤)。 減去不好的語法,您的自我評估匿名 function 看起來像這樣:

(function() {
})();

如果您願意,您可以在其中定義外部世界不可見的函數。 如果您對維護一個干凈的全局命名空間感興趣,例如使用庫代碼,這將非常有用。

(function() {
  function utilityFunctionFoo() {
  }

  function utilityFunctionBar() {
  }
})();

當然,如果你想從外界調用這些函數中的任何一個,那你就不走運了。 還是你? 實際上,還有另一種定義 function 的方法:

var foo = function() {
}

這與寫作完全相同:

function foo() {
}

...除了以第二種樣式編寫時,您實際上可以省略var關鍵字並創建一個全局變量:將它們放在一起:

(function() {
  publicData = "stuff accessible from outside anonymous function";
  var privateData = "stuff that stays inside anonymous function";

  function utilityFunctionFoo() {
  }

  function utilityFunctionBar() {
  }


  usefulFunctionExport = function() {
    utilityFunctionFoo();
    utilityFunctionBar();
  }
})();

usefulFunctionExport();

在 function 終止后,您將無法訪問它。 它是一個局部變量,當它的父 function 結束時,它會從 scope 結束。

您應該使主 function 成為構造函數,以便它返回 class 的新實例(您可以將其命名為 Blahdy_blah),其中成員 ZC1C425268E68385D1AB5074C17A94F14 是其屬性之一。

查找構造函數、它們的返回值和訪問成員變量。

如果你想執行 function,你需要返回一個 object,它會暴露 function。

var LIB = (function() {

    var fn = {
        member_function : function(){}
    };

    return fn;


})();

並打電話

LIB.member_function();
(function() {

    blady_blah.some_member_function();

})();

如果你需要往里面添加東西,你可以這樣寫。

(function() {

    blady_blah.some_member_function(function(){

        // Do stuff...

    });

})();

暫無
暫無

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

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