美文网首页
JavaScript 的“预 编译”

JavaScript 的“预 编译”

作者: 359c7a79d70f | 来源:发表于2016-07-10 22:50 被阅读23次
    • JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定 义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。

    • JavaScript 里的代码也是一种数据,同样可以被任意赋值 和修改的,而它的值就是代码的逻辑。只是,与一般数据不同的是,函数是可以被调用执行的。
      JavaScript 函数的神奇之处还体现在另外两个方面:一是函数 function 类型本身也具有对象化的能力,二是函数 function 与对 象 object 超然的结合能力。其实,函数就是对象,只不过比一般的对象多了一个括号“()”操作符,这个操作符 用来执行函数的逻辑。即,函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同。
      JavaScript 里的函数和对象既有对象的特征也有数组的特征。这里的数组被称为“字典”,一种可以任意伸缩的名称值对儿的 集合。
      其实, object 和 function 的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。

    • JavaScript 中也有 this,但这个 this 却与 C++、C#或 Java 等语言的 this 不同。一般编程语言的 this 就是对象自己,而 JavaScript 的 this 却并不一定!this 可能是我,也可能是你,可能是他,反正是我中有你,你中有我,这就不能用原来的那个“自我”来理解 JavaScript 这个 this 的含义了。为此,我们必须首先放下原来对象的那个“自我”。

    • 同一个函数可以从不同的角度来调用,this 并不一定是函数本身所属的对象。this 只是在任意对象和 function 元素结合时的一个概念,是种结合比起一般对象语言的默认结合更加灵活,显得更加超然和洒脱。

    • JavaScript 提供了传递 this 参数的多种形式和手段,其中,象 BillGates.WhoAmI()和 SteveJobs.WhoAmI()这种形式,是传递 this 参数最正规的形式,此时的 this 就是函数所属的对象本身。而大多数情况下,我们也几乎很少去采用那些借花仙佛的调用形式。但 只我们要明白 JavaScript 的这个“自我”与其他编程语言的“自我”是不同的,这是一个放下了的“自我”,这就是 JavaScript 特有的世界 观。

    function MyFunc() {}; //定义一个空函数 
    var anObj = new MyFunc(); //使用 new 操作符,借助 MyFun 函数,就创建了一个对象
    

    等价于:

    function MyFunc(){}; 
    var anObj = {}; //创建一个对象 
    MyFunc.call(anObj); //将 anObj 对象作为 this 指针调用 MyFunc 函数
    
    • 我们就可以这样理解,JavaScript 先用 new 操作符创建了一个对象,紧接着就将这个对象作为 this 参数调用了后面的函数。其实, JavaScript 内部就是这么做的,而且任何函数都可以被这样调用!但从 “anObj = new MyFunc()” 这种形式,我们又看到一个熟悉 的身影,C++和 C#不就是这样创建对象的吗?原来,条条大路通灵山,殊途同归啊!

    • 在 JavaScript 中,prototype 不但能让对象共享自己财富,而且 prototype 还有寻根问祖的天性,从而使得先辈们的遗产 可以代代相传。

    function New(aClass, aParams) //通用创建函数 
     {   function new_() //定义临时的中转函数壳 
         { 
           aClass.Create.apply(this, aParams); //调用原型中定义的的构造函数,中转构造逻辑及构造参数
         }; 
         new_.prototype = aClass; //准备中转原型对象 
          return new new_(); //返回建立最终建立的对象
    };
    

    -Xmx512m -Xms512m

    相关文章

      网友评论

          本文标题:JavaScript 的“预 编译”

          本文链接:https://www.haomeiwen.com/subject/vgwdjttx.html