在不更改原始js的情况下更改现有的js方法

时间:2015-10-22 18:06:37

标签: javascript jquery

我有一个被创建的类(testClass用于此目的)。该类内部有以下方法:

setExternalValue: function(val) {
        this.sliderCaption.innerHTML =  getPointsString(val*this.points_per_use, this.points_currency);
        this.sliderValuebox.value = this.getUses();
    }

我怎样才能与此相关并倾听这种方法的发生?当它完成后,我想运行一个特定的功能。在setExternalValue中放置自定义事件对我不起作用,因为我无法编辑原始js。

2 个答案:

答案 0 :(得分:3)

您可以将其包装,调用原始函数,然后插入处理程序代码。

private void btn_recom_Click(object sender, EventArgs e)
{
   connection.Open();
   OleDbCommand command = new OleDbCommand();
   command.Connection = connection;
   private void GetRows()
   {
       // Get the DataTable of a DataSet.
       DataTable table = dsDataSet.Tables["MainData"];
       DataRow[] rows = table.Select();
       // Print the value one column of each DataRow.

   }
}



var myObj = new testClass();   // or however you normally initialize them

myObj.oldSetExternalValue = myObj.setExternalValue;

myObj.setExternalValue = function(val) {
   var result = this.oldSetExternalValue(val);

   // whatever you wanted to run after it completes

   return result;
}




答案 1 :(得分:1)

引用旧函数。 用旧函数替换旧函数,但在完成时也执行新函数。

var obj = {   
    setExternalValue: function(val) {
        alert("inside method: " + val);
    }
};
var referenceOldFunction = obj.setExternalValue;

obj.setExternalValue = function (val) {

    referenceOldFunction.call(obj, val);

    // do stuff after it ends
}

obj.setExternalValue("test");