一种有意思的编写js方式

前些日子关注到了Javascript内核对对象内点语法的解析机制的一点点了解,为此本人在这里总结一下,也顺便up两个有点意思的Javascript方法。

Javascript的对象中如果遇到的点符号“.”,就会首先检查它全部包含的方法和属性,直到检查到点符号后面指定的方法或者属性。从这点出发,如果对象中嵌套的级别越多,这对频繁操作对象中的属性和方法就非常影响执行效率了。

下面是一个using方法,这个跟C#里的using方法的调用方式类似:

using(LIB.dom.classes).behavior(function(){
     this.add=function(c){
          this.classname=c;
     }
     //......
 } 

//它还有另外一种调用方式:
using(LIB.dom.classes,function(){
      this.add=function(c){
          this.classname=c;
      }
      //......
}); 

//using上面的两种方式可以互换操作,就是对同一个对象可以在两种方式中使用,比如: 

//LIB.namespace是我接下来要说明的一个函数
LIB.namespace("dom.event");
using(LIB.dom.event,function(){
     this.show=function(){
     alert("Hello");
     };
});  

using(LIB.dom.event).behavior(function(){
     this.show();
});

现在我们来看看namespace方法的使用,namespace的作用已经不是什么新鲜事了,很多库中都使用了这种操作方法,比如Google的closure-library库中就大量使用了这种操作方式。 (全文…)