原型与字面变量的理解

我的小伙伴传给我一段代码,让我猜猜结果是啥?

    var A =function () {

            
        };
        var B={
            x:1,
            y:{
                z:2
            }
        }
        A.prototype=B;
        var aa=new A();
        console.log(B);
        aa.y.z=3;
        aa.x=2;
        console.log(B.x);
        console.log(aa);
        console.log(B.y.z);

我的答案:1 2 

结果现实打败了我

 原型与字面变量的理解 原型与字面变量的理解原型与字面变量的理解

苦思好久都没搞懂

然后终于在《javascript 编程全解》上找到了答案

原型与字面变量的理解原型与字面变量的理解原型与字面变量的理解

新建对象是的内部机制为

aa={};

aa._proto_=A.prototype;

A.call(aa);

这是我自己对这段代码画的图

原型与字面变量的理解原型与字面变量的理解原型与字面变量的理解

也不知道对不对,留着遇到大神再请教