我正在使用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"
}
}
});
请帮助我了解谁“规则”,以及“电话”?它们是列表元素,还是对象的变量?为什么我们通过:?
来称呼它们简短的解释,或某些文档的链接将非常好。
非常感谢
答案 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)
rules
和phone
为Javascript object literals。