zoukankan      html  css  js  c++  java
  • 《Secrets of the JavaScript Ninja》:JavaScript 之运行时代码

            最近,在阅读 jQuery 之父 John Resig 力作:Secrets of the JavaScript Ninja(JavaScript忍者秘籍)。关于第九章提及的 JavaScript 之运行时代码,感觉蛮不错。因此,顺便在博客园记录一下。

           有关运行时、编译时就不再做过多介绍,相信,大部分同学或多或少熟悉一门强类型语言,比如:C#、Java 之类。就以 C# 为例,程序员编写的 .cs 文件最终将编译成 .dll 程序集中,如果 .cs 中有语法错误,将无法编译通过。而像 JavaScript 为动态语言,则强调运行时,如果代码有语法错误之类,一定要在程序运行时,才会抛出错误。当然,在 C# 中,程序员可利用反射进行运态创建对象之类。

          在 JavaScript 中,可利用 eval、Function、setTimeout、DOM Script 标签,在运行时候动态执行字符串代码。

    一  eval

         将一个JavaScript代码字符串求值成特定的对象(来自火狐开发者文档中心)。尼玛,感觉还是听起点有点听不懂。

         https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval

         不过,目前就个人使用来看,eval 常用于 ajax 请求中,用于 JSON 字符串反序列化之用。具体可        见: http://www.cnblogs.com/Lumia1020/p/4952964.html

     

    二  Function

        在 JavaScript 中,除了直接定义 function 函数,其实还可通过 Function 构建函数。(在 JS 中,函数其实是通过 Function 构造器创建)

         new Function ([arg1[, arg2[, ...argN]],] functionBody) arg1、arg2、、、形参参数,functionBody 函数体 参数为字符串类型

        https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function

    三 setTimeout

       通过火狐开发者文档中心可知,同 eval 一样,setTimeout 同样支持传入字符串参数。

       https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout

     

       四 DOM Script 标签

        没看过此书前,确实还不知有此种方法执行 JavaScript 字符串代码方法,利用 Script 标签 DOM API 实现。

     1 function createScriptTag(strData)
     2 {
     3 
     4   var scriptTag=document.createElement('script');
     5 
     6   scriptTag.type='text/javascript';
     7 
     8   scriptTag.text=strData;
     9   
    10   document.getElementsByTagName('head')[0].appendChild(scriptTag);
    11 
    12 
    13 }
    View Code

  • 相关阅读:
    【UOJ #268】【清华集训2016】数据交互(动态DP)
    【UOJ #267】【清华集训2016】魔法小程序(前缀和)
    【UOJ #266】【清华集训2016】Alice和Bob又在玩游戏(SG函数+01Trie)
    【CSP-S 2019题解】
    【CSP 2019游记】
    【CSP-S 2019模拟题解】
    sql语句: update和sql函数的冲突
    http协议之实践巩固(深度篇一)
    不错的开发工具做下记录
    javascrpt之this指向问题
  • 原文地址:https://www.cnblogs.com/Lumia1020/p/5504312.html
Copyright © 2011-2022 走看看