2013-06-05 120 views
0

有沒有辦法做到:JavaScript對象返回靜態方法和自己的方法

foo()  // return string "foo" 
foo.bar() // return string "bar" 

我試着用功能和對象進行實驗。但沒有發生。

+0

你想要的東西是這樣的: - function foo(){return「foo」; } foo.bar = function(){return「bar」; } – pvnarula

+0

你想讓foo()返回「foo」,那就是'function foo(){return「foo」}'或者你是否想要返回一個被調用的函數的名字,它會是'console.log(foo .name);'這將是毫無意義的,因爲你已經輸入了名字...... – luk2302

回答

2
function foo() { 
    return "foo"; 
} 
foo.bar = function() { 
    return "bar"; 
}; 

或者,如果你喜歡:

var foo = function() { 
    return "foo"; 
}; 
foo.bar = function() { 
    return "bar"; 
} 

JS函數是一個類型的對象,所以你可以分配屬性/方法將它們同任何其他對象。

0

你可以調用一個函數或者一個名爲foo的類,但是根據我的理解你不能同時擁有這兩個類。如我錯了請糾正我。爲什麼要用同樣的方式想要一個類和一個函數呢? 我假定這就是你想要的東西,因爲在您的文章

一點信息要定義一個函數使用該

function foo() { 
    console.log("foo"); 
} 

而且在你的榜樣稱呼它。

要定義一個類,像這樣做(here是一些其他的方式來做到這一點)。

var foo = { 
    bar: function() { 
     console.log("bar"); 
    } 
} 

再說一遍,就像你在你的例子中所做的那樣。

+0

_「如果我錯了,請糾正我。」 - - 嗯,呃......你錯了。嘗試從我的答案代碼。順便說一下,Javascript本身沒有類,但是如果你用'new'調用JS函數,它的行爲有點像其他語言中的類。 「class」這個詞通常意味着你可以創建實例,但你的'var foo = {...}'只是一個帶有方法的單例對象... – nnnnnn