繁体   English   中英

Javascript setter和getter与对象的键

[英]Javascript setter and getter with key for object

我在变量var o={};有一个对象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
*/

这有可能吗?

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

由于Object-Literals使用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/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects ,因为将来掌握这些知识将非常宝贵。

这是使它起作用的一些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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM