如何覆盖Javascript中的方法并将其应用于原始对象,而不是孩子?

fac*_*com 3 javascript html5 prototypal-inheritance html5-audio

我试图覆盖play()Audio对象的方法,但我不想只为子对象这样做.我想将它应用于标准的Audio对象.

问题是我也想使用原始play()方法.我已经尝试克隆Audio对象,进行更改,同时调用原始Audio对象的play()方法并重新分配回原始的Audio对象.它不起作用.

想法有人吗?例如,如何在仍然调用原始播放方法的同时alert()play()方法中添加?

PLZ.我需要这样做,因为我调用了一个调用新音频的工具生成的代码.因此,对于我正在做的数百代代码而言,不断地必须对此进行替换将是一种超级痛苦.

abu*_*uba 5

Audio.prototype.play = ( function( old ) {
   var a=1, b=2, c=3; // your 'private' variables - if needed;
   return function() {
      console.log( a+b+c );// do something   
      return old.apply( this, arguments );// return 'original' results
   }
} )( Audio.prototype.play );
Run Code Online (Sandbox Code Playgroud)