Javascript setter和getter用对象的键

时间:2013-08-31 15:36:05

标签: javascript object

我在变量var o={};中有一个对象 我想做一些像.push()方法在数组中为我的对象做的事情。

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
*/

这有可能吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

由于Object-Literals使用Key->Value模型,因此没有JS 方法来“推”一个值。

您可以使用Dot Notation:

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,将这些知识武装起来对将来来说是非常宝贵的。

答案 2 :(得分: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';