小编Var*_*yan的帖子

如果属性类型不同,则 V8 相同类型的两个对象的隐藏类不相同

我已经阅读了 V8 中的隐藏类,并在 d8 调试器 shell 中进行了一些测试。

function Vector(a, b) {
  this.a = a;
  this.b = b;
}

var x = new Vector(1, 2);
var y = new Vector(1, 3);
var z = new Vector(1, 'a');

print( %HaveSameMap( x, y ) ); //true
print( %HaveSameMap( x, z ) ); //false
x.b;
print( %HaveSameMap( x, z ) ); //true
print( %HaveSameMap( y, z ) ); //false
y.b;
print( %HaveSameMap( y, z ) ); //true
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,如果对象属性类型不同,它们不会共享它们的隐藏类,直到我们尝试访问类型不同的 Elder 对象中的属性。任何人都可以清楚地解释“幕后”发生了什么,也许它与内联缓存有关。

javascript v8 javascript-objects

1
推荐指数
1
解决办法
165
查看次数

标签 统计

javascript ×1

javascript-objects ×1

v8 ×1