2014-05-04 69 views
-1

嗨我曾嘗試一些JavaScript代碼綁定兩個功能。我的代碼..調用這兩個對象和函數返回對象

var b = {name: "sav",age: "20"} 

var c = function() { 

return 5; 

} 

b.c({name: "oops",age: "12}) 

當我調用控制檯上是這樣的..我得到錯誤undefined is not a function

的東西是我需要訪問name屬性就像b.c.name ..如果我將類似b.c.name它必須返回oops我..How能做到這一點..why我會得到錯誤,當我打電話b.c({});

希望你們能幫助我..Thanks

+1

你是什麼意思 「都」 的功能呢?只有一個。 'b'和'c'之間沒有關聯,所以沒有'b.c' – nnnnnn

+0

對不起,我的錯誤..我已經reedited – user3600759

+1

'c'不是'b'的屬性,所以'b.c'不存在。 – jfriend00

回答

3

b.c不存在,所以它解析爲undefinedundefined不是一個函數,所以這是您的錯誤消息來自的地方。

+0

你能告訴我如何使用像somevar.anothervaribale({}); – user3600759

+0

請編一段代碼讓我明白在哪種情況下我需要使用somevar.anothervaribale({}); ..它會很有幫助..謝謝 – user3600759

+0

@ user3600759:我不確定你在找什麼,但是這裏有一個猜測:'var b = {c:function(a){return a.name; }};''b.c({name:「oops」})' – user3553031

2

你越來越感到困惑的ObjectFunction之間的區別。

在你的例子中,bObject有2個屬性,nameage

當你寫b.c您試圖訪問一個財產b命名爲c,它不存在,因爲b只有nameage性能。

然後,當你調用b.c({})您要撥打b.c作爲Function,但由於b.c不存在,它的價值是undefined所以它拋出,你試圖調用未定義的函數錯誤。

爲您b不喜歡這樣你就可以分配一個Objectc

var c = {name: "oops",age: "12"}; 

現在你可以這樣來訪問這些屬性:

c.name // this gives you 'oops' 
c.age // this gives you '12' 
0

點符號是如何訪問性能和對象的方法。如果你想要做的僅僅是數據傳遞給函數的東西,你不需要使用點符號:

function doSomething(arg1, arg2, etc...) { 
    // do stuff with passed args 
} 

b = { 
    name: 'John', 
    age: 25 
} 

doSomething(b); 

如果你需要的功能範圍的特定對象,你需要使它的方法對象:

b.doSomething = function() { //etc... } 

b = { 
    name: 'John', 
    age: 25, 
    getAge: function() { 
     return b.age; 
    } 
} 

b.getAge();