javascript - 如何在 "javascript class"中重新定义一个方法

标签 javascript jquery underscore.js

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

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

  1. 为什么 F.prototype.method; 改变了?
  2. 我应该如何重新定义 Fcustom.prototype.method 才能不更改 F.prototype.method

注意:我正在使用 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?
    

最佳答案

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 :

关于javascript - 如何在 "javascript class"中重新定义一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194795/

相关文章:

javascript - createjs.Bitmap() 图像未显示

javascript - 我的 Javascript 正在切换所有元素,而不仅仅是一个

javascript - x-editable 刷新加载数据源?

javascript - jQuery Mobile click event.preventDefault 似乎并没有阻止更改

javascript - 为什么内部方法的内部最后执行?

javascript - Controller 测试模拟工厂

javascript - 如何使用下划线js转换这些数据?

Underscore.js 对对象而不是数组执行操作

javascript - 仅允许数字和数字之间的单个连字符

javascript - 获取嵌套对象属性的更好方法