Нужна помощь, чтобы понять использование ":" в JavaScript - PullRequest
2 голосов
/ 21 сентября 2010

Я использую плагин jQuery validate , и когда я встретил следующий скрипт, я осознал, что многого не понимаю в jQuery:)

Посмотрите пожалуйста

$("#invitationform").validate({
        rules: 
        {
            phone: 
  • Элемент списка

            {
                required: true,
                minlength: 6,
                number:true
            }
        },
        messages: 
        {
            phone: 
            {
                required: "Please enter a phone number",
                minlength: "Your number must consist of at least 6 digits"
            }
        }
    });
    

Пожалуйста, помогите мне понять, кто такие "правила" и "телефон" здесь?Это что-то вроде элементов списка или переменные объекта?И почему мы называем их через : ?

Краткое объяснение, или ссылки на некоторые документы будут очень хорошими.

Большое спасибо

Ответы [ 3 ]

13 голосов
/ 21 сентября 2010

Кроме нескольких примитивных типов (чисел, строк, логических, нулевых и неопределенных), все является объектом в JavaScript (даже функциями).

Объекты - это, в основном, контейнеры свойств, которые оказываются очень полезнымидля сбора и организации данных.

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

var myFirstObject = {
   'name': 'Bobby',
   'surname': 'Smith'
};

Кавычки вокруг имен свойств являются необязательными, если имя будет допустимым идентификатором JavaScript, а не зарезервированным словом.Имя свойства может быть любой строкой.Объекты могут содержать другие объекты, поэтому они могут легко представлять деревья или графики:

var myFlight = {
   'airline': 'Airline Name',
   'number': 'AN700',
   'departure': {
      'IATA': 'SYD',
      'time': '2010-09-04 23:10:00'
   },
   'arrival': {
      'IATA': 'LAX',
      'time': '2010-09-05 05:14:00'
   }      
};

Объекты JavaScript также оказываются удобной хеш-таблицей структурой данных.Вы можете легко сделать следующее:

var myHashTable = {};
myHashTable['name'] = 'Bobby';
myHashTable['surname'] = 'Smith';
// subscript notation:
alert(myHashTable['name'] + ' ' + myHashTable['surname']);
// dot notation: (equivalent)
alert(myHashTable.name + ' ' + myHashTable.surname);

jQuery и многие другие библиотеки JavaScript часто ожидают объект в качестве аргумента метода.Чтобы дать вам пример из другой библиотеки, вот как карта строится с использованием Google Maps API v3 :

var map = new google.maps.Map(document.getElementById('map'), { 
   mapTypeId: google.maps.MapTypeId.ROADMAP,
   center: new google.maps.LatLng(39.904667, 116.408198),
   zoom: 12
});

Обратите внимание, как мы можем легко передавать читаемые сложные структуры в качестве аргументов функциииз-за того, как работает JavaScript.

1 голос
/ 21 сентября 2010

Это на самом деле не специфично для jQuery, но на самом деле это JSON (который является просто частью ванильного JavaScript. Как отметил pygorex, это литералы объектов, то есть они являются именами свойств объекта.

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

var options = {
    rules: 
    {
        phone: 
        {
            required: true,
            minlength: 6,
            number:true
        }
    },
    messages: 
    {
        phone: 
        {
            required: "Please enter a phone number",
            minlength: "Your number must consist of at least 6 digits"
        }
    }
};

Вы можете сделать что-то вроде этого:

var isPhoneRequired = options.rules.phone.required;

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

0 голосов
/ 21 сентября 2010

rules и phone являются литералами объекта Javascript .

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