[英]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.