之间有什么区别吗?
function Person() {};
Person.prototype.eat = function(){};
Person.prototype.speak = function(){};
和
function Person() {};
Person.prototype = {
eat: function(){},
speak: function(){}
};
请注意,该问题仅适用于非继承函数。
大多数示例使用第一个选项,为什么不使用第二个选项,如果有多个方法?
此外,第二个选项可能误导认为现有的原型正在被替换,而在第一个选项中它被添加到。换句话说,javascript函数是否具有第二个选项可以覆盖的公共原型?
答案 0 :(得分:0)
第二个用Object类型的对象(泛型对象)替换原型中Person类型的对象 - 因为你实际上并没有继承另一个对象,所以区别很小(如果你继承,第二个就会有效#& 34;否定"继承,因为所有继承的方法都将消失。)
事实上,唯一想到的是你会失去.constructor property of the prototype。换句话说,在第一个例子中,Person.prototype.constructor === Person
将等于true,而在第二个例子中,它将等于false。