2013-05-03 80 views
-5

我在看是這樣的:有可能有一個JavaScript函數內部有兩個或更多的功能?

function Lab = { 
    minseat: function(){ 
     var seat = 10; 
     return seat; 
    }, 


    maxseat: function(){ 
     var seat = 50; 
     return seat; 
    } 

} 

問題是因爲下面的代碼將只在運行時運行,因此該代碼的定位成爲一個非常重要的,因爲我需要把它們上面的需要調用的代碼行(例如Lab.minseat())。

var Lab = { 
    minseat: function(){ 
     var seat = 10; 
     return seat; 
    } 


    maxseat: function(){ 
     var seat = 50; 
     return seat; 
    } 

} 

是的,我知道這個問題很愚蠢,最有可能會吸引投票,但我想知道是否有可能?

+1

你只是問了兩次相同的問題,還是我誤解? http://stackoverflow.com/questions/16350629/is-it-possible-to-have-a-javascript-variable-to-have-two-or-more-functions-insid – thebreiflabb 2013-05-03 03:12:27

+0

@thebreiflabb,不,它是一個不同的問題。一個是將許多函數放入一個變量中。另一個是將許多功能集成到一個功能中。 (不知道是否可以將許多函數放入一個函數中) – Jack 2013-05-03 03:13:56

+1

不,你不能在funcs裏面放funcs。但是你可以將funcs分配給變量。 – 2013-05-03 03:14:35

回答

4

您正試圖使用​​像文字一樣的功能。

在javascript中有一個叫做文字的東西,它的功能和這個完全一樣,是的它可以有更多的東西。它的語法是這樣的:

var foo = { 
    bar: functon(){}, 
    foobar: function(){} 
} 

,如果你想一個函數有,你可以在該函數外部調用的函數,你可以使用prototype關鍵字,您可以調用這些函數像這樣

foo.bar(); 
foo.foobar(); 

function foo(){}; 
foo.prototype.bar = function(){}; 

你可以調用這些函數像這樣

var f = new foo(); 
f.bar(); 

,或者你可以使用這個關鍵字

function foo(){ 
    this.bar = function(){}; 
} 

你可以調用這個喜歡

var f = new foo(); 
f.bar(); 

,或者如果你只打算使用的功能在功能,您可以使用var關鍵字

function foo(){ 
    var bar = function(){}; 
} 

你可以這樣稱呼這個功能

bar(); 

如果你曾經對類進行OO編程,它可能會更容易解釋。

將函數想象成一個類。它具有公共和私人成員和功能,在可以指定這些功能的功能中,當使用var關鍵字時,將這些關鍵字視爲私人成員和功能,並且在使用this關鍵字時,將這些關鍵字視爲公共關鍵字,並且還會使用prototype成員非常像this但是我還沒有看看有什麼不同。

當使用varthisprototype與函數這些是在面向對象的編程的條款所有non static。它需要一個對象引用。

這是因爲分配完成或者當您調用函數或當您創建一個新的實例

有叫new foo()相比調用foo()調用foo()時之間的差異,你回來什麼功能返回,但是當調用new foo()時,您將返回該對象的一個​​實例。

所以引用的foo公共成員,你將需要創建它

只是有點想掩蓋這一切新的實例。 xD

+1

這幾乎涵蓋了它... – iGanja 2013-05-03 03:20:37

+0

+1感謝SmartLemon。我將把它標記爲答案,因爲你寫了一個全面的答案,與我這個糟糕的問題相比。 – Jack 2013-05-03 03:31:25

+0

謝謝。我記得當天我開始使用JavaScript。像這樣的東西會幫助我很多。我真的不知道你的問題是什麼,所以我試圖掩蓋這一切。 – FabianCook 2013-05-03 04:28:21

3

是的,但是您的語法無效。

這是對象聲明語法:

var obj = { 
    member: value, 
    anotherMember: value 
}; 

這是函數的語法,這只是普通的語法:

function() { 
    // these are just regular statements 
    // no colons, no commas 

    function regularFunction() { 
     // ... 
    }; 

    var anonymousFunction = function() { 
     // ... 
    }; 
} 

你混合和匹配都和它不正確地分析。

+3

你的成員當然可以是自己的函數 – iGanja 2013-05-03 03:20:10

+0

+1感謝Jonathan Hobbs讓我知道我可以在一個函數內聲明多個函數。 – Jack 2013-05-03 03:32:16

相關問題