原型被分配对象文字与功能之间的区别

时间:2015-05-30 19:51:14

标签: javascript

我在网上发现这篇文章让我很困惑。

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";
};

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

1 个答案:

答案 0 :(得分:2)

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

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

尝试

console.log(Pizza.prototype);

每次之后都有一个外观。