[英]Using integer keys with dot notation to access property in javascript objects
[英]javascript Object - access child property using dot notation
我创建了一个需要传递字典对象进行初始化的对象,并且该对象具有属性(如length
)。 我希望能够通过传递类似以下内容的方法来简单地访问字典的key : value
对
myNewObj['a']
或myNewObj.a
而不必通过代替myNewObj.dictionary['a']
但无法弄清楚如何做到这一点。
有没有一种方法可以设置一个动态属性,如果没有其他属性或方法退出,它将改为查看字典并找到关联的键?
var newObject = function(dictionary) {
this.dictionary = dictionary;
this.length = dictionary[[Object.keys(dictionary)[0]]].length;
this.get = function (column) {
return this.dictionary[[column]];
}
};
var myNewObj = new newObject({
a : [1,2,3],
b : [4,5,6]
});
console.log(myNewObj.get('a'));
我已经对其进行了更新,以显示一个可以工作的.get()
方法,但它仍然不是我想要的。
jsFiddle: http : //jsfiddle.net/2uMjv/571/
尽管这可能不完全适合您的动态属性用例,但我能想到的最接近的方法是扩展原型。 至少通过使用Object.setPrototypeOf
*,您可以避免单独定义每个方法,并具有一组基本功能来应用于这些newObject
的每个。
var newObject = function(dictionary) {
this.dictionary = dictionary;
this.length = dictionary[[Object.keys(dictionary)[0]]].length;
this.get = function(column) {
return this.dictionary[[column]];
}
};
// Essentially a wrapper constructor.
var createNewObject = function(dictionary) {
Object.setPrototypeOf(dictionary, new newObject(dictionary));
return dictionary;
}
var myNewObj = createNewObject({
a : [1,2,3],
b : [4,5,6]
});
console.log(myNewObj['a']);
console.log(myNewObj.get('b'));
您为什么不只设置属性? :
class Dictionary {
constructor(dictionary) {
Object.assign(this, dictionary);
}
get length() {
return Object.keys(this).length;
}
get(column) {
return this[column];
}
}
var dict = new Dictionary({
a : [1,2,3],
b : [4,5,6]
});
console.log(dict.a, dict["a"], dict.get("a"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.