Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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
Javascript对象构造函数重写以停止调用某些方法_Javascript_Javascript Objects_Javascript Inheritance - Fatal编程技术网

Javascript对象构造函数重写以停止调用某些方法

Javascript对象构造函数重写以停止调用某些方法,javascript,javascript-objects,javascript-inheritance,Javascript,Javascript Objects,Javascript Inheritance,创建一个全局对象,例如“Obj”: Obj = { gtm : {}, method: function(){console.log("Method is called");} }; 在其他一些地方使用了Obj.method() 我的问题是,我是否可以以任何方式扩展“Obj”的代码,以防止调用Obj.method()。 我不想重写或删除其他地方的代码,因为这将是一个很大的变化。相反,我希望更改原始代码,以便在某些情况下不调用该方法 代理不是一个选项,因为代理也需要我在其他

创建一个全局对象,例如“Obj”:

Obj = {     
   gtm : {},
   method: function(){console.log("Method is called");}
};
在其他一些地方使用了
Obj.method()

我的问题是,我是否可以以任何方式扩展“Obj”的代码,以防止调用
Obj.method()
。 我不想重写或删除其他地方的代码,因为这将是一个很大的变化。相反,我希望更改原始代码,以便在某些情况下不调用该方法

代理不是一个选项,因为代理也需要我在其他地方更改呼叫。代理在IE 11中不起作用


我可以重写构造函数并实现我想要的吗

谢谢和问候

  • 将函数复制到其他地方
  • 编写一个调用它的新函数
  • 将该函数指定给对象属性
  • 例如:

    如果
    this
    的值或任何参数很重要,则需要传递它们

    e、 g


    我不完全确定你在找什么,但你说

    “相反,我希望更改原始代码,以便在某些情况下不调用该方法。”

    那么为什么不这样做呢:

    Obj = {     
       gtm : {},
       method: function(){
          if (someCondition) return;
          // do rest of the method here
       }
    };
    

    我看不出用这段代码调用方法的任何方法。有没有机会更正这段代码?目前,在创建函数中未使用
    $
    数据。而且,
    方法
    甚至没有附加到返回的对象。@TKoL我已经编辑了问题中的代码。@WiktorZychla我已经编辑了问题中的代码。“我可以重写构造函数吗”-示例中没有构造函数。我想要类似这样的东西:
    构造函数(){if(条件){传播并执行被调用的方法}否则{不做任何事情}
    有可能实现吗?您有一个使用对象初始值设定项生成的单例。由于您没有
    ,这没有意义。此答案中的代码通过重写现有对象来实现相同的最终结果。
    method.apply(this, arguments);
    
    Obj = {     
       gtm : {},
       method: function(){
          if (someCondition) return;
          // do rest of the method here
       }
    };