Javascript 'двоеточие' для маркировки анонимных функций?
что этот код тоже относится?
queryString: function() {
//some code
}
Я тестировал его в WebConsole (Firefox), но он не будет выполняться, поэтому я думаю, что это не эквивалентно function queryString() {}
.
Так что же это такое?
5 ответов:
вам не хватает какого-то кода там, но я предполагаю, что его часть объявления объекта, как это:
var obj = { queryString: function() { //some code } }; obj.queryString();
он назначает функцию как свойство литерала объекта. Это было бы эквивалентно этому:
var obj = {}; obj.queryString = function() { ... }; obj.queryString();
В общем случае синтаксис объектного литерала выглядит следующим образом:
{ key: value, otherKey: otherValue };
Итак, причина, по которой это не сработало в консоли, заключается в том, что она не была заключена в
{}
символы, обозначающие литерал объекта. И этот синтаксис допустим только в объекте буквальный.
Это, вероятно, внутри объявления карты / объекта так:
var obj = { queryString: function() { alert('here'); }, eggs: function() { alert('another function'); } }; obj.queryString();
это метка 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"
The
:
используется при определении объекта и его свойства.var obj = { queryString: function() { //some code } }
Теперь
obj.queryString
ваша функция.
какого
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 и т. д.,