2
var obj = {a:1,b:2};
function parent_object(num){
    console.log('This number is inside the object ',<????>);
}
parent_object(obj.a)

这应该输出指向 obj。我发现这样做的唯一方法是将每个数字对象装箱到一个对象中,该对象将保留对父对象的引用。然而,这是一个性能杀手。有没有更好的方法来跟踪号码的位置?

4

3 回答 3

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 应用程序性能的影响最重要的因素是您处理内存使用的方式。因此,这种方法并不是真正可取的,我建议您通过其他方法解决您的问题,无论它可能是什么。

于 2012-08-25T17:32:43.247 回答
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!

你真的想在这里解决什么?可能有更好的方法可供您使用。

于 2012-08-25T17:33:02.620 回答
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 找到

于 2012-08-25T17:35:29.423 回答