Синтаксис Javascript для начинающих - PullRequest
0 голосов
/ 19 июня 2011

Я пытаюсь понять, в чем разница между этими двумя фрагментами jQuery, поскольку они будут иметь одинаковый результат.

1

var method = {
      myFunctionA: function() { 
        // do something 
      },
      myFunctionB: function() { 
        // do something
      },
    }

$(selector1).click(function() { method.myFunctionA(this) });
$(selector2).click(function() { method.myFunctionB(this) });

2

function myFunctionA(){
    // do something
}

function myFunctionB(){
    // do something
}

$(selector1).click(myFunctionA);
$(selector2).click(myFunctionB);

Ответы [ 2 ]

2 голосов
/ 19 июня 2011

В примере # 2 вы устанавливаете (как обработчик события jQuery) ссылку на функцию. Эта ссылка относится к myFunctionA (и другому к его другу myFunctionB).

Ссылке на функцию передается параметр & mdash; см. документацию jQuery для этого.

В примере # 1 вы также устанавливаете (как обработчик события jQuery) ссылку на функцию. Эта ссылка относится к анонимной функции, тело которой выглядит следующим образом:

method.myFunctionA(this);

Ясно, что он делает то же самое, за исключением параметра функции; вы отбрасываете любой параметр, который jQuery хотел дать вам, и вместо этого отправляете this в конечный пункт назначения myFunctionA. Чтобы добавить еще один изолятор, myFunctionA даже не не принимает параметр, поэтому в любом случае это бесполезное усилие.

1 голос
/ 19 июня 2011

В основном первый подход использует анонимный объект и объявляет два метода, в то время как второй использует процедурное программирование.

Также есть что отметить.Это можно сделать в первом примере: переменную

var method = {
      myFunctionA: function() { 
        // do something 
      },
      myFunctionB: function() { 
        // do something
      },
    }

$(selector1).click(method.myFunctionA);
$(selector2).click(method.myFunctionB);

и method лучше называть "someObject", поскольку она содержит объект, а тот, что содержит методы.

Возможно, вам необходимо изучить основные понятия об объектно-ориентированном программировании и прототипно-ориентированном программировании на JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...