这两种在JavaScript中编写原型函数的方法有什么区别

Abu*_*zzy 1 javascript oop

Myfunction.prototype.updateMyFunction = function() {

 //do something

};

Myfunction.prototype = {

 updateMyfunction: function() {

  //do something

 }

};
Run Code Online (Sandbox Code Playgroud)

它们都产生相同的结果

MD *_*med 6

第一个是添加属性Myfunction.prototype,而第二个完全替换Myfunction.prototype为新对象.

结果不会总是相同的.考虑这种情况 -

Myfunction.prototype.oldMethod = function () {

};

Myfunction.prototype.updateMyFunction = function() {

    //do something

};
Run Code Online (Sandbox Code Playgroud)

加入最后一种方法后,您将能够同时访问oldMethodupdateMyFunction更新版本.如果你这样做 -

Myfunction.prototype.oldMethod = function () {

};

Myfunction.prototype = {

    updateMyfunction: function() {

        //do something

    }
};
Run Code Online (Sandbox Code Playgroud)

然后oldMethod将从原型链中删除(因为它prototype本身正在被新对象替换),您将无法再访问它.