通过对象id获取对象属性
Getting object property through object id
我对JS有点陌生,所以请描述一下。
我有一个对象的两个实例,我需要将一个实例的属性值代入另一个实例。正如我所知,JS缺乏对内存中对象id(而不是DOM id)的支持,所以我必须创建这样一个属性。目前我正在使用递归来创建多个对象,但这只是为了测试。
function MyObject(parentID, parentProperty) {
this.id = parentID + 1
this.myProperty = parentProperty + 1
switch(this.id){
case 5:
break;
default:
new MyObject(this.id, this.myProperty)
}
}
var myObject = new MyObject(1, 1);
现在我有4个对象。如何获取id为3的对象的myProperty值?
如果需要检索具有属性值的对象,则需要将它们存储在Array或object哈希中。我建议使用工厂方法来构造对象。当您在工厂方法中构造对象时,还将这些对象引用存储在哈希/数组中,该哈希/数组由您稍后要搜索的属性值键控。
例如,
(function(globalScope) {
var objectCache = [],
ObjectFactory;
globalScope.ObjectFactory = ObjectFactory = {
create : function(parentID, parentProperty) {
var newObj = new function() {
this.id = parentID + 1
this.myProperty = parentProperty + 1
};
objectCache.push(newObj);
return newObj;
},
findObjectById : function(parentId) {
//iterate through objectCache and find your object and returna
}
};
})(this);
将对象存储在对象散列(而不是数组)中
var objHashCache = {};
var obj = new Object();
objHashCache[obj.id] = obj;
当你想根据对象的ID检索对象时,你可以使用
return objHashCache[idToLookFor]
我会在MyObject
函数本身上存储一个对象的静态映射,键是id
。在构造函数中填充该映射,然后创建对象的所有实例的映射。
在您的示例中:
function MyObject(parentID, parentProperty) {
this.id = parentID + 1;
this.myProperty = parentProperty + 1;
MyObject.instances = MyObject.instances || {};
MyObject.instances[this.id] = this;
}
for (var i = 0; i < 5; i++) {
var myObject = new MyObject(i, i);
}
var thirdObject = MyObject.instances[3];
基本上,您必须遍历所有对象并找到具有条件的对象。
如果你知道linq,并且它更适合你的需求,你可以使用linq(http://linqjs.codeplex.com)
(我来自移动设备,当我到达电脑前时,我会修复我的答案格式)
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性