《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 实现。
function createScriptTag(strData)
{ var scriptTag=document.createElement('script'); scriptTag.type='text/javascript'; scriptTag.text=strData; document.getElementsByTagName('head')[0].appendChild(scriptTag); }

《Secrets of the JavaScript Ninja》:JavaScript 之运行时代码的更多相关文章
- JavaScript忍者秘籍——运行时代码求值
1. 代码求值机制 JavaScript中,有很多不同的代码求值机制. ● eval()函数 ● 函数构造器 ● 定时器 ● <script>元素 - 用eval()方法进行求值 作为定义 ...
- JavaScript 对引擎、运行时、调用堆栈的概述理解
JavaScript 对引擎.运行时.调用堆栈的概述理解 随着JavaScript越来越流行,越来越多的团队广泛的把JavaScript应用到前端.后台.hybrid 应用.嵌入式等等领域. 这篇文 ...
- 如何将oc代码转换成运行时代码
// 运行时 其实就是oc的底层 平时写的代码 最终都是转成底层的运行时代码以下面程序为例子: 如果我们想要看我们的main.m文件底层转换成了怎样的运行时代码 ,我们可以这样做. 1.打开终端 ...
- webpack学习:uni运行时代码解读一 (页面初始化加载)
uni的vue代码是如何在微信小程序里面执行的,对此比较感兴趣所以去调试学习了一波. 准备工作 // 在vue.config.js里打开非压缩的代码 module.exports = { config ...
- 解读JavaScript 之引擎、运行时和堆栈调用
转载自开源中国 译者:Tocy, 凉凉_, 亚林瓜子, 离诌 原文链接 英文原文:How JavaScript works: an overview of the engine, the runtim ...
- 解读 JavaScript 之引擎、运行时和堆栈调用
https://www.oschina.net/translate/how-does-javascript-actually-work-part-1 随着 JavaScript 变得越来越流行,很多团 ...
- Runtime运行时机制
Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的 我们需要了解的是 Objective-C 是一门动态语言, ...
- 读Secrets of the JavaScript Ninja(二)对象
面向对象和原型 理解原型 在JavaScript中,可通过原型实现继承.原型的概念很简单.每个对象都含有原型的引用,当查找属性时,若对象本身不具有该属性,则会查找原型上是否有该属性. 每个对象都可以有 ...
- 《JavaScript Ninja》之正则表达式
正则表达式 是一个拆分字符串并查询相关信息的过程. 练习网站:JS Bin 正则表达式测试网站:Regular Expression Test Page for JavaScript 正则表达式进修 ...
随机推荐
- order by多个字段对索引的影响
某前台sql语句,简化后如下SELECT products_name,products_viewed FROM `products_description` ORDER BY products_vie ...
- 页面异步加载javascript文件
昨天听一同事说的异步加载js文件,可以提高页面加载速度.具体方法如下:(function() { var ga = document.createElement('script'); ga.type ...
- div错位解决IE6、IE7、IE8样式不兼容问题
IE6里DIV错位的问题 采用”FLOAT:LEFT“的DIV在IE8.IE7.都没问题,IE6下却向下移动,出现空白.这是因为,IE6采用的内核默认把DIV之间的距离增加了3~5个PX, ...
- Connection failed: NT_STATUS_ACCOUNT_RESTRICTION
今天在linux机器上想要远程重启一台window的机器,输入命令后报错,如下 Google了下,有说是window禁止远程空密码登录,于是到window系统中添加了密码,这下再运行 这下执行就正常了
- shell语句记录-awk
cat ./daily_uv/daily_uv_20140104 | awk '{fr[$1]+=$3; k=$1 "_" $2; av[k]+=$3;} END{for (k i ...
- [WebService]之TCPMon的使用
TCPMon是apache下的一个项目,下载地址:http://ws.apache.org/commons/tcpmon/download.cgi (1)功能: TCPMon可以拦截客户与服务之间的H ...
- iOS UITableView UIScrollView 的支持触摸事件
在使用了 UITableView 或UIScrollView的controller 里无法响应触摸事件touch事件, 自定义tableView.scrollView #import <UIKi ...
- Google Glass应用开发探索
摘要:2012年6月的Google开发者大会上,作者有幸预定到了Google Glass.8个月后,她收邀参加了Google纽约总部举行的Google Glass Foundry开发大赛.在为期两天的 ...
- Lync激活用户遇到ConstraintViolationNoLeadingOrTrailingWhitespace错误
启用用户的时候出现错误ConstraintViolationNoLeadingOrTrailingWhitespace,如下图 解决方案:域控中,该用户的名字最后多出了个空格,批量生成域用户的脚本问题 ...
- js运动 多数据运动 含JSON
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...