AO

  • 创建AO(Activation Object)对象,又叫执行期上下文;
  • 寻找形参变量声明作为AO的属性名,并赋值为undefined;
  • 传入实参的值;
  • 在函数体内寻找函数声明,放入作为AO的属性,并赋值为其函数体。

GO

  • 创建GO(Global Object)对象;
  • 寻找变量声明作为GO的属性名,并赋值为undefined;
  • 寻找函数声明,放入作为GO的属性,并赋值为其函数体。

相关的代码输出题目1 [AO]

function test(a, b) {console.log(a);  // function a(){return 'a'}var c = 123;console.log(c);  // 123function a() {return 'a';}console.log(b);  // 2var b = function c() {return 'b';}console.log(b);  // function a(){return 'b'}
}
test(1, 2);// 创建一个AO对象(activation object),AO{}
// 寻找形式参数和变量声明作为AO的属性名,并赋值为undefined
AO {a: undefined,b: undefined,c: undefined
}
// 传入实参的值
AO {a: 1,b: 2,c: undefined
}
// 在函数体内寻找函数声明,放入作为AO的属性,并赋值为其函数体
AO {a: function(){return 'a'},b: 2,c: undefined
}
//执行过程
a输出AO中的结果
c被赋值为123
b未被重新赋值,为AO中的值
b被重新复制为函数

相关的代码输出题目2

    function Foo() {getName = function() {console.log(1);}return this;}Foo.getName = function () {console.log(2);}Foo.prototype.getName = function () {console.log(3);}// 给全局变量赋值一个匿名函数var getName = function() {console.log(4);}// 函数声明function getName() {console.log(5);}// 1. 调用Foo函数上的静态方法Foo.getName();   // 2/**  2. 直接调用getName函数* GO{*    getName: undefined   =>  初始化时,var的变量提升*    getName: function(){console.log(5)}  =>  function有变量提升*    getName: function(){console.log(4)}  =>  变量的赋值行为* }* */getName();     // 4/**  3. 直接调用构造函数Foo, this指向window*  函数内部的getName没有使用var,let,const声明,则该变量为全局变量,且发生了重新赋值行为*  getName: function(){console.log(1)}* */Foo().getName()  // 1// 4. window.getName() => 1  (GO内getName()输出1)getName()  // 1// 5. new (Foo.getName())   =>   将Foo.getName()作为构造函数// 作为普通函数 this指向调用者,作为构造函数 this指向实例对象// 输出2 是在执行构造函数过程中的一个输出new Foo.getName() // 2// 6. 先执行new Foo()创建实例对象,调用实例对象身上的getName方法 => 自身实例对象没有,去原型链上寻找new Foo().getName() // 3// 7. 综合上边的5,6 => 把6作为构造函数new new Foo().getName() // 3

js中的的GO和AO相关推荐

  1. JS中的预编译(AO、GO详解)

    文章目录 一.由实例引发的思考 二.全局上下文GO: 三.函数上下文AO: 四.全局上下文GO+函数上下文AO: 总结 执行js文件的流程: ①通篇检查语法错误 ②预编译 ③解释一行执行一行 一.由实 ...

  2. js中的arguments

    arguments是JavaScript里的一个内置对象,是指向实参对象的引用,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象,所以agrument ...

  3. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  4. [JavaScript] 探索JS中的函数秘密

    函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...

  5. 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查

    Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...

  6. 在JS中最常看到切最容易迷惑的语法(转)

    发现一篇JS中比较容易迷惑的语法的解释,挺有用的,转载下,与大家分享: js中大括号有四种语义作用 语义1,组织复合语句,这是最常见的 Js代码  if( condition ) { //... }e ...

  7. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  8. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  9. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

最新文章

  1. (69)番外 —— 编写一个简易的反调试引擎
  2. html中两个冒号,css中双冒号和单冒号区别
  3. 计算机图形学与相关学科的关系,哈尔滨工业2015博士招生计算机图形学与人机交互设计大纲...
  4. 计算机事业单位专技岗考什么区别,事业单位管理岗和专技岗的区别(从待遇等角度)...
  5. CF204E-Little Elephant and Strings【广义SAM,线段树合并】
  6. 第62课 捉迷藏 《小学生C++趣味编程》
  7. 泛型集合 有序泛型 c#
  8. node.js读写文件
  9. 精选PHP毕业设计12套——源码+论文完整资源
  10. 记录用HDFview和Panoply软件打开nc文件
  11. [激光器原理与应用-10]:激光器分类
  12. 小说网站服务器架构图,搭建小说网站用什么程序?搭建小说网站图文教程_好特教程...
  13. 手写jQuery轮播图插件,即拿即用,更多接口,更少代码实现你想要的轮播图~~
  14. Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
  15. 终于等来了十一长假,当然要戴上你去这些美到哭的地方
  16. jvm 内存模型结构
  17. 黑马瑞吉外卖之移动端验证码登录使用qq邮箱
  18. EPLAN新建项目图纸
  19. C++中为二维数组开辟空间,并释放空间
  20. 基于YOLO的谱面识别与检索【Python环境实现】

热门文章

  1. 根据输入的半径值,计算球的体积。
  2. win10如何打开摄像头_干货|如何优雅的打开你的win10电脑
  3. 计算机网络-IP地址计算专题(非常重要)
  4. 局域网LanQQ聊天项目
  5. 四极管 整理wince挂起和唤醒(suspend/wakeup)以及实现关机功能文章
  6. 机器学习(二)--sklearn之逻辑斯蒂回归和朴素贝叶斯
  7. Nginx输出header到access日志文件
  8. 电脑快捷键操作以及常用知识大全
  9. Word排版:页眉不能对应每章标题、页脚偶数页消失等问题
  10. 构建基于docker的airflow并访问有kerberos认证的cdh集群