функция типа jQuery как переменная

#javascript #jquery #function #variables

#javascript #jquery #функция #переменные

Вопрос:

могу ли я создать переменную, которая является функцией этого типа:

 jQuery.fn.appendValueToTextArea = function(txt){
  return this.each(function(){
    this.value  = txt;
  });
};
  

?

Я попытался поместить перед ней var , но я получаю ошибку.

Комментарии:

1. запутался. вы хотите, чтобы var myfunction = function() {} или что-то еще?

2. Не могли бы вы уточнить свой вопрос? Вы пытались поставить var перед чем? Вы хотите создать переменную , которая является функцией какого типа? Ваш вопрос не имеет смысла.

3. Ваш код, похоже, делает то, что вы пытаетесь сделать: jsfiddle.net/L8fSn

4. ну, функции jquery можно вызывать следующим образом: element.appendValueToTextArea('sometext') я хочу создать функцию, которая может вызываться подобным образом, но я хочу, чтобы функция была переменной, подобной той, которую Джон опубликовал выше

5. Я также здесь, чтобы проголосовать за путаницу . Можете ли вы привести пример функции, которую вы бы описали как «переменную»?

Ответ №1:

Если вы хотите вызвать метод для элемента, как вы написали в комментарии, вам определенно нужно расширить jQuery.func .

Может быть, вы просто хотите сохранить имя в переменной?

 var name = 'appendValueToTextArea'; 
element[name]('text');
  

Единственный другой способ — сохранить ссылку на функцию и использовать .call() или .apply() :

 var func = jQuery.fn.appendValueToTextArea = function(txt) {
    // ...
};

func.call(element, 'text');
  

Или (поскольку я не уверен, чего вы действительно хотите) вы можете сначала присвоить функцию переменной, а затем присвоить ее jQuery.fn.appendValueToTextArea :

 var func = function(txt) {
    // ...
};

jQuery.fn.appendValueToTextArea = func;
  

Ответ №2:

Что произойдет, если вы определите переменную после определения функции?

т. е.

 jQuery.fn.appendValueToTextArea = function(txt){
  return this.each(function(){
    this.value  = txt;
  });
};

var fn = jQuery.fn.appendValueToTextArea;
  

Ответ №3:

 jQuery.fn.appendValueToTextArea = function(txt){
  return this.each(function(){
    this.value  = txt;
  });
};

//This would put the function above in a variable. 
//However, I'm not exactly sure what this gains you    
var myfunction = jQuery.fn.appendValueToTextArea;