Javascript 'двоеточие' для маркировки анонимных функций? - PullRequest
57 голосов
/ 22 февраля 2012

На что ссылается этот код?

queryString: function() {

//some code

}

Я протестировал его в WebConsole (Firefox), но он не запустился, поэтому я думаю, что он не эквивалентен function queryString() {}.

Так что жеэто точно?

Ответы [ 5 ]

72 голосов
/ 22 февраля 2012

Вам не хватает некоторого кода, но я предполагаю, что он является частью объявления объекта следующим образом:

var obj = {
  queryString: function() {
    //some code
  }
};
obj.queryString();

Он назначает функцию как свойство литерала объекта.Это было бы эквивалентно этому:

var obj = {};
obj.queryString = function() { ... };
obj.queryString();

В общем, синтаксис литерала объекта выглядит следующим образом:

{ key: value, otherKey: otherValue };

Таким образом, причина, по которой это не сработало в консоли, заключается в том, чтоне был заключен в {} символов, обозначающих литерал объекта.И этот синтаксис действителен ТОЛЬКО в литерале объекта.

9 голосов
/ 22 февраля 2012

Это, вероятно, внутри объявления карты / объекта, например:

var obj = {
    queryString: function() {
        alert('here');
    },
    eggs: function() {
        alert('another function');
    }
};

obj.queryString();
7 голосов
/ 13 июня 2014

Это этикетка https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

var i, j;

loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
   loop2:
   for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
      if (i == 1 && j == 1) {
         continue loop1;
      }
      console.log("i = " + i + ", j = " + j);
   }
}

// Output is:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
//   "i = 2, j = 0"
//   "i = 2, j = 1"
//   "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"
6 голосов
/ 22 февраля 2012

: используется при определении объекта и его свойств.

var obj = {
   queryString: function() {
      //some code
   }
}

Теперь obj.queryString - ваша функция.

1 голос
/ 22 февраля 2012

Что за

queryString: function() {

//some code

}

означает, что вы можете использовать queryString () для вызова функции, к которой она относится. Этот вид ссылок обычно используется, если вы хотите определить класс (или псевдокласс; P) в вашем javascript. Как то так,

var application= { namespace: {} };

application.namespace.class_name = function(){

  function constructor(){
   return {
     exposed_property1 : property1,
     exposed_property2 : property2,  
     ...
     ...
    }
   }
  //Write property/functions that you want to expose.
  // Write rest of the function that you want private as function private(){}
};

Так что теперь в любой другой части кода вы можете создавать объекты для class_name и использовать его для доступа к property1, property2 и т. Д.,

...