为原型分配对象文字与函数之间的区别
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。
我在网上找到这篇文章,这让我很困惑。
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。