【问题标题】:Is there a way to get object memory address and object hash in JavaScript [duplicate]有没有办法在 JavaScript 中获取对象内存地址和对象哈希 [重复]
【发布时间】:2019-02-23 14:08:48
【问题描述】:

正如问题的标题所述,我想知道是否有办法打印对象内存地址以及是否有内部对象哈希?我知道我可以使用对象比较器:

var x = {id:1};
var y = x;
console.log(x === y); // => true

但我想获得内存地址的字符串/数字表示和内部哈希的字符串表示(如果有的话)......

【问题讨论】:

  • 第一个问题是为什么需要那个内存地址?它有什么用?
  • 我不认为 EcmaScript 标准定义了这种东西,所以这将是您正在使用的实际 Javascript 引擎的实现细节(V8 用于 Chrome / Node.JS,另一个用于 Mozilla Firefox ...),因此,特别是,语言本身不会有任何东西可以知道这类事情。调试器可能会。

标签: javascript


【解决方案1】:

这些信息在 JavaScript 中都不可用。如果一个环境提供它,它将是该环境功能集的一部分,而不是 JavaScript 本身。

还要注意,对象的内存地址在对象的整个生命周期中不一定是一个常量。特别是,现代 JavaScript 引擎可能会在堆栈上分配函数内创建的对象,然后如果该对象将在函数终止后继续存在,则将它们从堆栈复制到堆中。 (在进行垃圾收集时,如果有必要,他们也可能会移动它们,尽管我不知道他们会这样做。)所以即使你能得到地址,它也很可能在稍后变得无效。但是,如果某个环境提供了这些信息,那么它可能会在这方面带有特定于环境的警告。

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多