JavaScript中有没有办法发现属性所属的对象?我知道这听起来很荒谬,这是一个例子:
Obj = {};
Obj._name = "name";
var x = Obj._name;
在这个例子中,有没有办法发现什么对象' x'是指?
谢谢
答案 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;
您所要求的只有在具有唯一属性值的紧密集合对象中才能实现,您知道x
始终是集合中某个对象的属性值,没有其他对象具有该属性值。非常具体的用例。
答案 1 :(得分:0)
如果您只是希望将对象附加到字符串变量,您可以执行以下操作:
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;
参考x
将返回Chad
。但是,您可以通过引用x.obj
来访问所有对象的属性。