添加原型的方法 - 一次一次,一次一次

时间:2014-06-18 16:38:57

标签: javascript prototype

之间有什么区别吗?
function Person() {};

Person.prototype.eat   = function(){};
Person.prototype.speak = function(){};

function Person() {};

Person.prototype = {
    eat:   function(){},
    speak: function(){}
};

请注意,该问题仅适用于非继承函数。

大多数示例使用第一个选项,为什么不使用第二个选项,如果有多个方法?

此外,第二个选项可能误导认为现有的原型正在被替换,而在第一个选项中它被添加到。换句话说,javascript函数是否具有第二个选项可以覆盖的公共原型?

1 个答案:

答案 0 :(得分:0)

第二个用Object类型的对象(泛型对象)替换原型中Person类型的对象 - 因为你实际上并没有继承另一个对象,所以区别很小(如果你继承,第二个就会有效#& 34;否定"继承,因为所有继承的方法都将消失。)

事实上,唯一想到的是你会失去.constructor property of the prototype。换句话说,在第一个例子中,Person.prototype.constructor === Person将等于true,而在第二个例子中,它将等于false。