我已经打开了jQuery 1.7.1库并想学习代码,但我发现这些函数是以奇怪的方式声明的(对我而言)。例如:
show: function() {
//some code here
},
我学会了以这种方式定义功能:
function show() {
//some code here
}
有人可以解释一下为什么 show 函数不是第二种方式编写的(就像大多数互联网上的教程一样)?
答案 0 :(得分:6)
这是因为它在一个对象中。 Object Literals
以这种方式定义其属性:
{
name: value,
//OR
'name': value
}
其中value几乎可以是任何数字,字符串,函数甚至是其他对象。在JavaScript中,您还可以声明anonymous functions
并将它们分配给变量。实际上,以下声明具有相同的效果:
//declares the myFunc1 function
function myFunc1() {}
//declares an anonymous function and assigns it to myFunc2
var myFunc2 = function() {};
//you can now call either like so:
myFunc1();
myFunc2();
所以,如果我有一个对象并且我希望它的一个属性是一个函数,那么将这两个概念结合起来我会这样做:
var myObj = {
name: 'My Object',
init: function() {
return 'Initializing!';
},
version: 1.0
};
alert(myObj.init());
然后您将获得输出:Initializing!
。请务必查看Mozilla Developer Network上的精彩文档和教程,包括他们的JavaScript Tutorial Series
希望这有帮助!
答案 1 :(得分:5)
第一种方式编写它实质上是将函数设置为对象的属性。
例如:
// I can create a new empty object
var myObject = {};
// or I can create a new object with a basic property
var myObject = {
color: "blue"
};
// I can also create an object with methods (like jQuery)
var myObject = {
color: "blue",
showColor: function(){
alert(this.color);
}
};
// and you can use the object like this
myObject.showColor(); // calls the showColor method and will alert "blue"
这有助于jQuery封装,命名空间和组织代码。
以下是一些非常好的文章:
答案 2 :(得分:2)
第一个声明,即show: function
,将show定义为具有类型函数的对象中的字段。第二个在当前范围内声明了一个名为show的函数(可能是全局?)
答案 3 :(得分:1)
它们被描述为js对象函数。在这种情况下:
var jQuery = {
show: function(){
//some code here
}
}
所以你可以像jQuery.show()那样访问它。
我想说乍得的答案对于深入研究来说是最准确的。您应该研究它们,因为它们可以彻底改变您以非常简洁的方式编写js的方式,这种方式与其他库的冲突更不容易。