Как лучше всего переписать объектный метод Javascript - PullRequest
0 голосов
/ 12 сентября 2011

Я использую фреймворк, который позволяет включать файлы JS.Вверху моего JS-файла у меня есть что-то вроде:

<import resource="classpath:/templates/webscripts/org/mycompany/projects/library/utils.lib.js">

Я хочу переопределить довольно маленький метод, который определен в очень большом файле utils.lib.js.Вместо того, чтобы вносить изменения непосредственно в utils.lib.js, файл, который является частью инфраструктуры, я хочу перезаписать только один метод.В файле utils.lib.js есть что-то похожее на:

var Evaluator =
{
   /**
    * Data evaluator
    */
    getData: function Evaluator_getData(input)
    {
          var ans;

          return ans;
    },
    ...
 }

Я хочу изменить только то, что делает метод getData.Извините за основной вопрос, но после импорта файла, который копирует содержимое JS в верхнюю часть моего файла JS, я могу просто сделать что-то вроде:

 Evaluator.getData = function Mine_getData(input)
                {
                  ...
                };

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Да, вы можете просто переназначить этот метод на вашу собственную функцию, как вы предложили:

 Evaluator.getData = function Mine_getData(input)
 {
     ...
 };

Это успешно изменит то, что происходит, когда вызывается свойство .getData(input).

0 голосов
/ 30 сентября 2011

Да, вы можете.

Однако Evaluator не является надлежащим «классом». Вы не можете написать var x = new Evaluator (); Таким образом, вы не переопределяете, а просто меняете переменную getData. Вот почему мы говорим, что в JavaScript функции первоклассного гражданина обрабатываются как любая переменная.

...