1. 代码求值机制 JavaScript中,有很多不同的代码求值机制. ● eval()函数 ● 函数构造器 ● 定时器 ● <script>元素 - 用eval()方法进行求值 作为定义在全局作用域内的eval()方法,该方法将在当前上下文内,执行所传入字符串形式的代码. 基本功能 ● 该方法将执行传入代码的字符串 ● 在调用eval()方法的作用域内进行代码求值 例如: eval("5+5") (function(){ eval("var ninja = 6&…
最近,在阅读 jQuery 之父 John Resig 力作:Secrets of the JavaScript Ninja(JavaScript忍者秘籍).关于第九章提及的 JavaScript 之运行时代码,感觉蛮不错.因此,顺便在博客园记录一下. 有关运行时.编译时就不再做过多介绍,相信,大部分同学或多或少熟悉一门强类型语言,比如:C#.Java 之类.就以 C# 为例,程序员编写的 .cs 文件最终将编译成 .dll 程序集中,如果 .cs 中有语法错误,将无法编译通过.而像 JavaS…
JavaScript 对引擎.运行时.调用堆栈的概述理解  随着JavaScript越来越流行,越来越多的团队广泛的把JavaScript应用到前端.后台.hybrid 应用.嵌入式等等领域. 这篇文章旨在深入挖掘JavaScript,以及向大家解释JavaScript是如何工作的.我们通过了解它的底层构建以及它是怎么发挥作用的,可以帮助我们写出更好的代码与应用.据 GitHut 统计显示,JavaScript 长期占据GitHub中 Active Repositories 和 Total Pu…
// 运行时 其实就是oc的底层  平时写的代码 最终都是转成底层的运行时代码以下面程序为例子: 如果我们想要看我们的main.m文件底层转换成了怎样的运行时代码 ,我们可以这样做. 1.打开终端  ,输入cd  切换到我们当前项目所在目录 2.然后ls -l 看一下当前目录下面的文件 3.然后输入命令:clang -rewrite-objc main.m  然后回车你会看到如下画面 4.这个时候我们再次输入 ls -l 查看我们当前目录下的文件 你会发现多了一个main.cpp文件 实际是c+…
uni的vue代码是如何在微信小程序里面执行的,对此比较感兴趣所以去调试学习了一波. 准备工作 // 在vue.config.js里打开非压缩的代码 module.exports = { configureWebpack: config => { config.devtool = 'none' config.mode = 'development' } } // 运行时代码路径 node_modules\@dcloudio\uni-mp-weixin\dist\index.js // uni修改…
转载自开源中国 译者:Tocy, 凉凉_, 亚林瓜子, 离诌 原文链接 英文原文:How JavaScript works: an overview of the engine, the runtime, and the call stack 随着 JavaScript 变得越来越流行,很多团队在他们的堆栈中实现诸多层级的支持 - 前端.后端.混合应用程序.嵌入式设备等等. 本文是该系列文章的第一篇,旨在深入研究 JavaScript 及其实际工作原理:我们认为通过了解 JavaScript 的…
https://www.oschina.net/translate/how-does-javascript-actually-work-part-1 随着 JavaScript 变得越来越流行,很多团队在他们的堆栈中实现诸多层级的支持 - 前端.后端.混合应用程序.嵌入式设备等等. 本文是该系列文章的第一篇,旨在深入研究 JavaScript 及其实际工作原理:我们认为通过了解 JavaScript 的构建块以及它们如何一起协作的,你将能够编写更好的代码和应用. 如 GitHut 统计中所示,J…
1.定时器和线程 - 设置和清除定时器 JavaScript提供了两种方式,用于创建定时器以及两个相应的清除方法.这些方法都是window对象上的方法. 方法 格式 描述 setTimeout   id=setTimeout(fn,delay)  启动一个定时器,在一段时间(delay)之后执行传入的callback,并返回该定时器的唯一标识 clearTimeout  clearTimout(id) 如果定时器还未触发,传入定时器标识即可取消该定时器 setInterval id=setInt…
概要:本篇博客主要介绍JavaScript的原型 1.对象实例化 - 初始化的优先级 初始化操作的优先级如下: ● 通过原型给对象实例添加的属性 ● 在构造器函数内给对象实例添加的属性 在构造器内的绑定操作优先级永远都高于在原型上的绑定操作优先级.因为构造器的this上下文指向的是实例自身,所以我们可以在构造器内对核心内容执行初始化操作. - 协调引用 如下代码观察原型变化时的行为: function Ninja(){ this.swung = true; } var ninja = new N…
概要:本篇博客主要介绍函数的一些类型以及常见示例 1.匿名函数 使用匿名函数的常见示例: window.onload = function(){ assert(true,'power!'); }; //创建一个匿名函数作为事件处理程序,这里无需定义函数名,直接在其位置为其赋值即可; var ninja = { shout: function(){ assert(true,"Ninja"); } }; ninja.shout(); //创建一个函数,将其作为ninja的一个方法,使用sh…