如何在“javascript类”中重新定义方法

时间:2012-08-30 10:27:36

标签: javascript jquery underscore.js

请运行以下代码段 1 ,看看JS控制台中发生了什么:

我的问题是关于代码段中的最后一行:

  1. 为什么F.prototype.method;已更改?
  2. 如何重新定义Fcustom.prototype.method以便不更改F.prototype.method
  3. 注意:我正在使用jQuery和下划线来扩展该功能。


    • 1 测试代码段:

      var F = function () {};
      F.prototype.method = function () {
          // some code
      }
      
      F.prototype.method; // it shows "some code"
      
      
      Fcustom = $.extend(true, F, {});
      
      _.extend(Fcustom.prototype, {
      method: function () {
          // other code
          }
      });
      
      Fcustom.prototype.method; // it shows "other code"
      
      F.prototype.method; // it shows "other code" instead of "some code" Why?
      

1 个答案:

答案 0 :(得分:3)

var obj = { myMethod : function() { 
              //some code
          }
};

var newObj = $.extend(true, {}, obj);

newObj.myMethod = function (){       
   //new method
};

newObj.myMethod();  //should call the new method

虽然

obj.myMethod(); //still calls the old "//some code"

DEMO