var obj = {a:1,b:2};
function parent_object(num){
console.log('This number is inside the object ',<????>);
}
parent_object(obj.a)
这应该输出指向obj。我发现这样做的唯一方法是将对象中的每个数字对象装箱,这将保留对父对象的引用。不过,这是一个性能杀手。有没有更好的方法来跟踪数字的位置?
答案 0 :(得分:3)
其实没有。不仅在JavaScript中,而且在其他传统语言中都没有。
据我所知,唯一的方法就是让你完全按照自己的说法做一些事情:在一个对象中装入数字(或任何其他字段类型),以保持对它的引用(可能通过构造函数注入)封闭父母。
有问题的拳击可以这样完成:
BoxedValue = function(value, parent) {
this.value = value;
this.parent = parent;
}
var i = {};
n.i = new BoxedValue(12, i)
console.log(i.n.parent);
但是,一般来说,当前浏览器的JavaScript应用程序性能中最重要的因素是您处理内存使用的方式。因此,这种方法并不可行,我建议您通过其他方法解决您的问题,无论它是什么。
答案 1 :(得分:0)
无法做到这一点,因为您可以让对象从多个位置互相引用:
var num = 1;
var obj = {a: num, b: 2};
var obj2 = {x: num};
parent_object(obj.a); // should it return obj or obj2? Both are technically correct!
你真的想在这里解决什么?可能有更好的方法可供您使用。
答案 2 :(得分:0)
var obj = {a:1,b:'string',c:2}
for(prop in obj){
if(typeof obj[prop]=='number'){
console.log(prop + ' : ' + obj[prop] + ' found')
}
}
日志:
a:1发现
c:2发现