Myfunction.prototype.updateMyFunction = function() {
//do something
};
Myfunction.prototype = {
updateMyfunction: function() {
//do something
}
};
他们都产生相同的结果
答案 0 :(得分:6)
第一个是向Myfunction.prototype
添加属性,而第二个是用新对象完全替换Myfunction.prototype
。
结果并不总是相同的。考虑这种情况 -
Myfunction.prototype.oldMethod = function () {
};
Myfunction.prototype.updateMyFunction = function() {
//do something
};
添加最后一种方法后,您将能够稍后访问oldMethod
和updateMyFunction
。如果你这样做 -
Myfunction.prototype.oldMethod = function () {
};
Myfunction.prototype = {
updateMyfunction: function() {
//do something
}
};
然后oldMethod
将从原型链中删除(因为prototype
本身正在被新对象替换),您将无法再访问它。
答案 1 :(得分:0)
第一个使用已存在的MyFunction原型,而第二个使用新对象替换原型。
更换原型时出现了一些令人惊讶的问题:
var MyFunction = function(){
};
var obj = new MyFunction();
MyFunction.prototype = {
updateMyfunction: function() {}
};
var obj2 = new MyFunction();
console.log(obj2 instanceof MyFunction) // true as expected
console.log(obj instanceof MyFunction) // false because the prototype changed