发现属性所属的对象?

时间:2015-06-24 21:50:12

标签: javascript object

JavaScript中有没有办法发现属性所属的对象?我知道这听起来很荒谬,这是一个例子:

Obj = {};
Obj._name = "name";

var x = Obj._name;

在这个例子中,有没有办法发现什么对象' x'是指?

谢谢

2 个答案:

答案 0 :(得分:0)

不是真的,没有 - 没有后向引用检查或JS中可用的任何内容。

这种工作的唯一方法是,如果您可以访问所讨论的所有对象,在某种类型的集合中,并且可以检查每个对象的属性值。

这只返回第一个具有匹配值的对象,但不保证它是值的来源。



var myObjs = [
  {name: 'one'},
  {name: 'two'},
  {name: 'three'}
];

function findObjWithVal(val, objs) {
  for (var i = 0; i < objs.length; i++) {
    for (var p in objs[i]) {
      if (objs[i].hasOwnProperty(p) && objs[i][p] === val) {
        return objs[i];
      } 
    }
  }
}

console.log(findObjWithVal('two', myObjs)); // [object Object] { name: "two" }
&#13;
&#13;
&#13;

您所要求的只有在具有唯一属性值的紧密集合对象中才能实现,您知道x始终是集合中某个对象的属性值,没有其他对象具有该属性值。非常具体的用例。

答案 1 :(得分:0)

如果您只是希望将对象附加到字符串变量,您可以执行以下操作:

&#13;
&#13;
var Obj = {
  _name: 'Chad',
  _address: '123 Main Street'
};

function string(val, obj) {
  var s= new String(val);
  s.obj= obj;
  return s;
}

var x = string(Obj._name, Obj);

document.body.innerHTML= x + ' ' + x.obj._address; //Chad 123 Main Street
&#13;
&#13;
&#13;

参考x将返回Chad。但是,您可以通过引用x.obj来访问所有对象的属性。