在JavaScript中,如何找到数字字段的容器对象? varobj={a:1,b:2}; 函数父对象(num){ log('此编号在对象内',); } 父对象(对象a)

在JavaScript中,如何找到数字字段的容器对象? varobj={a:1,b:2}; 函数父对象(num){ log('此编号在对象内',); } 父对象(对象a),javascript,performance,hash,Javascript,Performance,Hash,这应该是指向obj的输出。我发现的唯一方法是将每个数字对象装箱到一个对象中,该对象将保留对父对象的引用。不过,这是一个性能杀手。有没有更好的方法来跟踪一个数字的位置?实际上没有。不仅在JavaScript中,而且在其他常规语言中都没有 据我所知,唯一的方法是你完全按照你自己说的去做:把数字(或任何其他字段类型)装箱到一个对象中,这个对象将保留对其封闭父对象的引用(可能通过构造函数注入) 这样就可以完成所讨论的拳击: var obj = {a:1,b:2}; function parent_obj

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

实际上没有。不仅在JavaScript中,而且在其他常规语言中都没有

据我所知,唯一的方法是你完全按照你自己说的去做:把数字(或任何其他字段类型)装箱到一个对象中,这个对象将保留对其封闭父对象的引用(可能通过构造函数注入)

这样就可以完成所讨论的拳击:

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

但是,一般来说,JavaScript应用程序在当前浏览器中的性能最重要的因素是处理内存使用的方式。因此,这种方法并不可取,我建议您通过其他方法解决您的问题。

无法做到这一点,因为您可以让对象从多个位置相互引用:

BoxedValue = function(value, parent) {
    this.value = value;
    this.parent = parent;
}

var i = {};
n.i = new BoxedValue(12, i)
console.log(i.n.parent);
你到底想解决什么问题?您可能有更好的方法

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!
日志:

a:找到了1个


c:2发现

为什么需要这样做?这是不可能的。JavaScript中的数字实际上是“原语”。。因此,虽然这可以通过装饰对象(包括数字对象,尽管我不知道实现允许进行哪些优化)来实现,但对于“原始”数字来说,这是永远不可行的。白金,这在我的最后一个问题中已经解释过了,我愿意听取建议@Dokkat请重新总结并使每个问题“自给自足”。(同样,如果没有“最后一个问题”的链接,我们不知道发生了什么。)这不会发生在我的具体案例中,因为每个对象在一个大哈希树中都有一个固定的位置。但你是对的。这就是我试图解决的问题:我有一个系统,其中所有东西都是一棵大树的一部分,所以它必须跟踪它的父树。例如,只有数字和字符串不能,因为您不能设置3.parent。请创建一个新的对象类型,以便跟踪值和父对象,并确保树中只包含该对象类型。这将测试对象中的值,而不是值所在的对象。。不要问我为什么这个问题是什么。我已经在我的最后一个问题上解释过了,如果你感兴趣的话。这并没有达到问题的目的。
var obj = {a:1,b:'string',c:2} 
for(prop in obj){
  if(typeof obj[prop]=='number'){
    console.log(prop + ' : ' + obj[prop] + ' found')
  }
}