Dojo语法精讲

来源:互联网 发布:淘宝 印度伟哥 编辑:程序博客网 时间:2024/06/10 19:03

Dojo语法精讲

黄诚 整理

QQ群:65643887

第一句话分号;

;(function(){

这是出现在dojo.js文件中的第一句话。

它是来在每条语句结尾使用,表示语句结束的符号,其实有时候可能省略分号,解释器通常能正确识别JavaScript语句并执行。在ECMAScript标准中,分号即使一个可选的符号来表示语句的结束。

虽然可选,但应该意识到这是为了方便非专业用户而准备的。因此在使用JavaScript开发专业的程序时,应该在每条语句的结束加上分号,这可以保证程序有良好的结构而且避免了一些不可预知的错误:举例下面的就是由于省略了分号导致产生语法错误。

var a=1

/(b+)/.exec(“abbbc”)

alert(RegExp.$1)

这段代码第一行声明了一个变量并赋值为1,第二行用正则表达式提取一个字符串中的连续的b字符,第三行输出提取的字符串。尽管代码看上去正确,但执行时却会提示语法错误,原因在于第一行没有以分号结尾,于是解释器继续向下解析,看能否和上一行形成合法的语意,当遇到斜杠”/”时,解释器会认为这是一个除法符号,因为它能够跟上一行后面形成合法的语意,但在继续解释第二行时则会发生错误,所以应该在第一行结尾上加上分号。告诉解释器语句已经结束。

 

dojo全局变量的定义方法。

(function(){

if(typeof dojo == "undefined"){

           this.dojo = {

                 _scopeName: "dojo",

                 _scopePrefix: "",

                 _scopePrefixArgs: "",

                 _scopeSuffix: "",

                 _scopeMap: {},

                 _scopeMapRev: {}

           };

      }

 

      var d = dojo;

….

})();

typeof操作符号来获取一个变量所包含数据的类型,其语法为

typeof(变量名或常量)

例如:

var a = 1;

var b = 'true';

alert(typeof(a));

alert(typeof(b));

alert(typeof(dojo));

 

JavaScript中一共有9种数据类型,分别是:

未定义

Undefined

Null

布尔

Boolean

字符串

String

数值

Number

对象

Object

引用

Reference

列表

List

 

JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供一个简单的方式类创建对应,即大括号({})语法:

{

property1:statement,

property2:statement2,

propertyN:statementN

}

通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号割开),来实现对象的定义,这段代码就直接定义个具有n个属性或方法的对象,其属性名和其定义之间用冒号(:)隔开。

 

this.dojo = {

                 _scopeName: "dojo",

                 _scopePrefix: "",

                 _scopePrefixArgs: "",

                 _scopeSuffix: "",

                 _scopeMap: {},

                 _scopeMapRev: {}

           };

 

//调用dojo对象的属性scopeName

alert(dojo. scopeName);

匿名函数定义语法。

正常的函数定义为:

function functionName([arguments]){

     Javascript statements

       [return expression]

}

其中的functionName可以省略,成为匿名函数。一般定义匿名函数为如下:

 

var max = function(a, b){

if(a>b) return a;

return b;

}

因为没有函数名称要使用它得直接定义一个变量传入结果。

 

dojo定义的格式如下:

(function(){

         var mp = dojo.config["modulePaths"];

         if(mp){

                   for(var param in mp){

                            dojo.registerModulePath(param, mp[param]);

                   }

         }

})();

没有直接用变量调用而是通过全局变量dojo进行操作。

它外面的(function(){})();语法表示一个匿名函数的定义。

var iii = (function(a,b){return a+b;})(1,2);

alert(iii);

后面的括号(1,2)表示创建完后立即进行这个函数调用。结果是弹出3的结果。

iii是表示返回的值,而不是创建的函数,因为括号”(“比等号”=”有更高的优先级。

这是为了在很长的代码段中进行模块化设计或者想避免命名冲突,这是一个不错的解决方法。

函数定义

函数定义有好几种。一种如下:

var func2 = function(…){…};

 

dojo定义isString函数定义方法如下:

 

dojo.isString = function(/*anything*/ it){

         //      summary:

         //               Return true if it is a String

         return !!arguments.length && it != null && (typeof it == "string" || it instanceof String); // Boolean

}

 

理解上面的语法,对dojo的调用也就没有什么障碍了。

原创粉丝点击