需要帮助来理解JavaScript中“:”的用法

时间:2010-09-21 18:22:15

标签: javascript jquery syntax

我正在使用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 个答案:

答案 0 :(得分:13)

除了少数基本类型(数字,字符串,布尔值,null和undefined)之外,一切都是JavaScript(甚至是函数)中的对象。

对象基本上是属性的容器,这对于收集和组织数据非常有用。

创建对象的一种常用方法是使用object literal notation,其中属性名称通过冒号:符号与值分隔开来:

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对象也恰好是一种方便的hash table数据结构。您可以轻松执行以下操作:

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 :(得分:1)

这实际上并不特定于jQuery,但实际上是JSON(它只是vanilla JavaScript的一部分。正如pygorex所说,那些是对象文字,也就是说它们是对象的属性名称。 / p>

这意味着,例如,如果您要使用该表示法创建对象,而不是将其传递给函数,则可以调用它们包含的值。例如,如果您这样做:

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经常使用这种结构,以便能够方便地将大量参数传递给插件函数。这很方便,因为你只需要在函数调用中指定一个参数就可以传入许多选项,并且只有在调用者指定了替代值时,你才能轻松设置被覆盖的默认值。

答案 2 :(得分:0)

rulesphoneJavascript object literals