在Javascript中创建类似字典对象的.net

我想在JavaScript中创建一个对象,它将值存储在键,值对中,我应该能够传递一些键,并且应该能够获得它的值。 在.NET世界中,我们可以使用字典类进行此类实现。 我们在JavaScript世界中有任何选择吗? 我正在使用ExtJs 4.1,所以如果你知道ExtJS中的任何选项,即使这样也行。

我尝试过类似的东西,但我无法通过钥匙获得价值。

var Widget = function(k, v) { this.key = k; this.value = v; }; var widgets = [ new Widget(35, 312), new Widget(52, 32) ]; 

只需使用标准的javascript对象:

 var dictionary = {};//create new object dictionary["key1"] = value1;//set key1 var key1 = dictionary["key1"];//get key1 

注意:您还可以使用点表示法(即dictionary.key1 )获取/设置您创建的任何“键”


如果你想要它的特定function,你可以采取进一步的…

 function Dictionary(){ var dictionary = {}; this.setData = function(key, val) { dictionary[key] = val; } this.getData = function(key) { return dictionary[key]; } } var dictionary = new Dictionary(); dictionary.setData("key1", "value1"); var key1 = dictionary.getData("key1"); 

这个课程取自Marijn Havereke的书Eloquent JavaScript

小提琴

 function Dictionary(values) { this.values = values || {}; var forEachIn = function (object, action) { for (var property in object) { if (Object.prototype.hasOwnProperty.call(object, property)) action(property, object[property]); } }; Dictionary.prototype.containsKey = function(key) { return Object.prototype.hasOwnProperty.call(this.values, key) && Object.prototype.propertyIsEnumerable.call(this.values, key); }; Dictionary.prototype.forEach = function(action) { forEachIn(this.values, action); }; Dictionary.prototype.lookup = function(key) { return this.values[key]; }; Dictionary.prototype.add = function(key, value) { this.values[key] = value; }; }; var numberDic = new Dictionary({One: 1,Two: 2, Three: 3}); //-- does key exist console.log(numberDic.containsKey("One")); console.log(numberDic.containsKey("One")); console.log(numberDic.containsKey("Four")); //-- loop through each item in the dic numberDic.forEach(function(key, value) { console.log(key, "is", value); }); //-- works with complex objects //------------------------------------------ var complexObjectDic = new Dictionary({ Microsoft: { Something: "Real Interesting", About: "Microsoft", Will: "Go", Here: ".", ProductPrices: { WindowsPhone: 55.88, Windows :{ WinXp : 180.00, Win7 : 200.00, Win8 : 150.00 } } }, Apple: { Did: "you", Hear: "the", New: "iphone", Will: "be coming out soon", }}); //-- does key exist console.log(complexObjectDic.containsKey("Microsoft")); console.log(complexObjectDic.containsKey("Apple")); console.log(complexObjectDic.containsKey("Facebook")); //-- search the dic by key console.log(complexObjectDic.lookup("Microsoft")); console.log(complexObjectDic.lookup("Apple")); //-- add item to dic complexObjectDic.add("Instagram", { This: "is", Another: "object", That: "I willl be Adding" }); //-- loop through each item in the dic complexObjectDic.forEach(function(key, value) { console.log(key, value); }); 
 var widget={}; var key='k'; widget[key]='v'; alert(widget.k);//gives you v