Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在“a”中重新定义方法;“javascript类”;_Javascript_Jquery_Underscore.js - Fatal编程技术网

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

如何在“a”中重新定义方法;“javascript类”;,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,请运行以下代码段1,并查看JS控制台中发生的情况: 我的问题是关于片段的最后一行: 为什么F.prototype.method更改 我应该如何重新定义Fcustom.prototype.method,才能不改变F.prototype.method 注意:我使用jQuery和下划线来扩展函数 1测试代码段: var F = function () {}; F.prototype.method = function () { // some code } F.prototype.met

请运行以下代码段1,并查看JS控制台中发生的情况:

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

  • 为什么
    F.prototype.method更改
  • 我应该如何重新定义
    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?
      

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


    我想你是想把参数换成
    $。简言之,extend
    @pimvdb:。对但它认为最好证明第一个论点是变化的目标。而原作则保持不变。所有这些都没有直接篡改
    prototype
    。我理解,但恐怕您对第一个代码段的最后一条评论是不正确的。@pimvdb:很抱歉,我已经对我的评论进行了编辑。在我看来,OP是在尝试1。获取原始2的克隆。然后改变它的实现。我希望我没有犯那么多错误,对吧?你是对的:)但我的观点是
    newObj.myMethod===obj.myMethod
    ,所以两个调用都引用了“some code”函数。你想把函数
    F
    克隆到
    Fcustom
    ?很遗憾,你不能克隆函数。。。
    obj.myMethod(); //still calls the old "//some code"