2013-05-20 49 views
0

又来了一个小白问题:看到是这样写一个jQuery代码:jQuery的块风格

var PRINCIPAL = {}; 

PRINCIPAL.Function = function($element) { 
    var self = this; 
    /*more vars*/ 

    this.init = function() { 
     self.initialFunction(); 
    }; 
    this.initialFunction = function() { 
     /*code here*/ 
    }; 
    this.secondOne = function() { 
     /*code here*/ 
    }; 
    this.init(); 
}; 
    /*associative array below??*/ 
PRINCIPAL.array = { 
    CONFIGURATION: 10, 
    CONFIGURATION2: 200, 
    init: function($element) { 
     /*code here*/ 
    }, 
    firstFunction: function() { 
     /*code here*/ 
    }, 
    secondOne: function() { 
     /*code here*/ 
    }, 
    thirdOne: function() { 
     /*code here*/ 
    } 
}; 
/*and at the end it stars all functions inside the blocks*/ 
$(function() { 
    PRINCIPAL.array.init($('#element')); 
}); 

好了,现在:有很多阵列像上面的,还有一些其他的(?)函数也是如此,所有的代码都被分块。我不明白,这是一种编程风格还是什么?

+1

在javascript中,'{}'表示对象不是数组。所有'function(){}'都是匿名函数,这些函数用于将函数存储在稍后要执行的变量中。 – sgroves

+0

重新提出你的问题“下面的关联数组?”是的,有点。有些人(主要来自PHP)将对象称为“关联数组”,但在JavaScript中,正常术语仅仅是“对象”或“映射”或(很少)“字典”。 –

回答

1

这是对象表示法。不过,它并不是特别精心编写的代码,因此您可能不希望将其用作学习示例。

但是,一般原则是{}表示一个对象,所以PRINCIPAL通过赋值成为一个对象。点符号允许您轻松地访问对象的参数和方法,因此第一个块定义了一个方法(或函数),第二个块定义了一个参数,在这种情况下它是另一个对象。在这个例子中,方法和参数使用对象文字符号在其中定义了更多的方法/参数。

Here's a basic introduction to object-oriented javascript如果你有兴趣。

0

在JavaScript中,{}表示对象不是数组。 (但你可以将一个对象看作本质上是一个关联数组或散列)。

所有的function() {}都是匿名函数,这里用来将函数存储在稍后要执行的变量中(函数只是对象,可以存储)。 PRINCIPAL.array这里实际上是一个伪类,因为闭包可以用来模拟JavaScript中的类(JS没有内置的类)。

0

这是一个常见的(也是很好的)问题。

到这里看看:http://ejohn.org/apps/learn/

开始与“命名的函数”和你的工作方式了。

您示例中的代码使用本教程中的技巧。尽管如此,这个例子写得不好。