为原型分配对象文字与函数之间的区别

difference between prototype being assigned an object literal vs function

我在网上找到这篇文章,这让我很困惑。

http://jonathancreamer.com/object-literals-and-prototypes-in-javascript/

当我运行下面的代码

case2:
Pizza.prototype = {
    divvyUp: function () {
        return this.type  + " pizza which has " + this.slices +" slices";
    }
};

Versus case1:

Pizza.prototype.divvyUp = function () {
    return this.type  + " pizza which has " + this.slices +" slices";
};

难题在于,虽然 Pizza.prototype.constructor in case1: 是构造函数,而 Pizza.prototype.constrcutor in case2: 是 object() 函数,并且 case2: 解耦了继承链。但是为什么当我执行 sausagePizza.divvyUp() 对于这两种情况,我得到相同的结果。但是,当 case2: 解耦继承链并且不再引用 Pizza() 构造函数时,为什么我得到的 case2 的结果类似于 case1

前者会将 整个 prototype 替换为包含单个函数的对象 - divvyUp.

后者将修改现有prototype,添加(或替换)功能divvyUp

尝试

console.log(Pizza.prototype);

在每一个之后都有一个lookie。