2013-08-31 53 views
0

我有一個對象在一個變量var o={}; 我想做什麼.push()方法在數組中爲我的對象做什麼。Javascript setter和getter與對象的鍵

JS代碼:

// Array: 
var ar=[]; 
ar.push('omid'); 
ar.push('F'); 
var got=ar[1]; 
// above code is standard but not what I'm looking for ! 
/*-------------------------------------*/ 


// Object: 
var obj={}; 

/* obj.push('key','value'); // I want do something like this 
    var got2=obj.getVal('key'); // And this 
*/ 

這是可能的呢?

+0

可能重複http://stackoverflow.com/questions/1168807/how-can-i-add-a-key -value-pair-to-javascript-object-literal) –

回答

2

由於對象字面使用Key->Value模型,不存在JS 方法「推」的值。

您可以使用點表示法:

var Obj = {}; 

Obj.foo = "bar"; 

console.log(Obj); 

或者括號標記:

var Obj = {}, 
    foo = "foo"; 

Obj[foo] = "bar"; 
Obj["bar"] = "foo"; 

console.log(Obj); 

考慮閱讀https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects,如武裝自己有這方面的知識將是未來非常重要的。

+0

是的,它的工作:) – Omid

4
var obj = {} 

// use this if you are hardcoding the key names 
obj.key = 'value' 
obj.key // => 'value' 

// use this if you have strings with the key names in them 
obj['key2'] = 'value' 
obj['key2'] // => 'value' 

// also use the second method if you have keys with odd names 
obj.! = 'value' // => SyntaxError 
obj['!'] = 'value' // => OK 
2

這是一些JavaScript魔法,它使它工作。 看一看。

var obj = {}; 
Object.defineProperty(obj,'push',{ 
value:function(x,y){ 
    this[x]=y; 
} 
}); 

obj.push('name','whattttt'); <<<this works!!! 

obj; 
//{name:'whattttt'} 
obj.name or obj['name'].. 
//whattttt 

我之所以使用Object.defineProperty定義.push功能,因爲我不希望它顯示爲對象的屬性。所以如果你有3件物品,這將永遠是第4件。總是弄亂循環。但是,使用這種方法。您可以隱藏屬性但可訪問。

雖然我不知道爲什麼你會使用這種方法,當已經有一個簡單的方法來做到這一點。

分配一個值做到這一點

obj.variable = 'value'; 

如果價值關鍵是數字或怪異做到這一點...

obj[1] = 'yes'; 

訪問數或怪異的名字也做

obj[1]; 

並最終分配在代碼中生成的,沒有硬編碼的隨機密鑰或密鑰,也比使用這種形式。

var person= 'him'; 

obj[him]='hello'; 
的[I可以添加一個密鑰/值對一個JavaScript如何對象常量?](