Javascript 带有原型的隐藏类

Javascript 带有原型的隐藏类,javascript,performance,v8,Javascript,Performance,V8,假设我有密码 function Test() { this.a = true; } Test.prototype.b = false; var test = new Test(); 如果我这样做 test.b = true; 这会改变隐藏的类吗 那么,如果您认为可能会将一些属性添加到对象中,那么在原型中将初始化的属性添加到未定义的属性是否更有效 function MaybeHasTest() {} MaybeHasTest.prototype.test = undefined;

假设我有密码

function Test() {
    this.a = true;
}
Test.prototype.b = false;

var test = new Test();
如果我这样做

test.b = true;
这会改变隐藏的类吗

那么,如果您认为可能会将一些属性添加到对象中,那么在原型中将初始化的属性添加到未定义的属性是否更有效

function MaybeHasTest() {}
MaybeHasTest.prototype.test = undefined;

var test1 = new MaybeHasTest();
var test2 = new MaybeHasTest();
test2.test = 5; // Is the hidden class kept here?

什么是“隐藏类”?这是V8优化属性查找的方式。您是否忘记了第二个示例中的
.prototype
?不确定您的意思。在分配b之前,我的对象的形式是
[object.prototype,{b:false},{a:true}]
,之后是
[object.prototype,{b:false},{a:true,b:true}]
。因此,对象正在发生变化,我更想问的是,隐藏类是否考虑了重新定义原型属性,如果是这样,最后一个示例对性能有好处吗?