jQuery函数声明解释

Ива*_*вац 2 javascript syntax jquery declaration function

我已经打开了jQuery 1.7.1库并想学习代码,但我发现这些函数是以奇怪的方式声明的(对我而言).例如:

show: function() {
        //some code here
},
Run Code Online (Sandbox Code Playgroud)

我学会了用这种方式定义函数:

function show() {
  //some code here
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么show function不是第二种方式写的(就像大多数互联网上的教程一样)?

Cha*_*had 6

这是因为它在一个对象内.Object Literals以这种方式定义其属性:

{
    name: value,
    //OR
    'name': value
}
Run Code Online (Sandbox Code Playgroud)

其中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();
Run Code Online (Sandbox Code Playgroud)

所以,如果我有一个对象并且我希望它的一个属性是一个函数,那么将这两个概念结合起来我会这样做:

var myObj = {
    name: 'My Object',
    init: function() {
        return 'Initializing!';
    },
    version: 1.0
};

alert(myObj.init());
Run Code Online (Sandbox Code Playgroud)

然后你会得到输出:Initializing!.请务必查看有关Mozilla开发者网络的精彩文档和教程,包括他们的JavaScript教程系列

希望这可以帮助!


swa*_*ins 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"
Run Code Online (Sandbox Code Playgroud)

这有助于jQuery封装,命名空间和组织代码.

这里有几个相当不错的文章: