我在网上发现这篇文章让我很困惑。
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
答案 0 :(得分:2)
前者会将整个 prototype
替换为包含单个函数的对象 - divvyUp
。
后者将修改现有 prototype
,添加(或替换)函数divvyUp
。
尝试
console.log(Pizza.prototype);
每次之后都有一个外观。