- 链式作用域
变量的作用域是整个函数,不是代码块
变量不可以被声明函数外部的程序引用,可以被声明函数内部的函数引用。
开发
声明函数内部一个变量不管声明在什么地方,函数内部都可以访问到。
声明函数内部一个变量不管声明在什么地方,函数内部子函数都可以访问到。
运行
声明函数运行一次,会产生一个变量放到内存中。运行完成如果内部函数对象被保留到外部,并且内部函数可能在运行时依赖该变量,则该变量一直留存在内存中。
声明函数再运行一次,会再产生一个变量放到内存中。当然也会再产生一些内部函数被保留到外部。这些变量,函数和上面的不是同一批。
- 闭包
就是声明函数的内部定义了变量,并且内部有函数引用了变量,并且内部函数会被保留到外部。
那么一次声明函数的运行,就产生了一套闭包的环境。函数对象主要是函数的职责,当然它也是对象,但不建议给这个对象赋属性,方法等其他职责,以免混乱。
函数对象主要应该是运行,是产生一个空对象或用另一个对象充当this,来执行内部逻辑。
函数对象
执行函数的this对象
执行函数的返回值对象
闭包环境
这四个不是一个环境。闭包的函数操作的变量,不是那个this对象的,也不是函数对象的,也不是函数对象的返回值对象,而是闭包环境中内存中一个独立的变量。
验证
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var ff2 = f1();
var fff2 = f1();
ff2();//999
nAdd();
ff2();//999
fff2();//1000
f1.n//undefined
var o1 = {};
f1.call(o1);
o1.n//undefined
- 原型链
java是类继承,开发期,运行期类创建了一个对象就把类和所有父类的属性包括了。
js有原型链机制,运行期先创建上层对象,有自己属性和方法。然后定义函数通过prototype指向该上层对象,这样该函数创建的所有新对象都通过__proto__指向该上层对象。新对象有自己的属性和方法。应用新对象时可以使用新对象的,也可以使用上层对象的属性和方法。
f1 = function(){}
f1.prototype --> f1.prototype
f1 build new f1()
f1.prototype
constructor --> f1
__proto__ --> Object.prototype
new f1();
_proto_ --> f1.prototype
----------------------------------------
Object
Object.prototype --> Object.prototype
Object build {}
Object.prototype
constructor --> Object
__proto__ --> null
{}
__proto__ --> Object.prototype
---------------------------------------
Function
Function.prototype --> function(){}
Function build f1
function(){}
constructor --> Function
__proto__ --> Object.prototype
f1
__proto__ --> function(){}
- 函数执行
代码词法分析
ActiveObject
补充属性
参数中出现过的属性
局部变量中出现过的属性
成员方法会覆盖成员变量
成员变量不会覆盖成员方法
然后从第一句开始执行代码
- 值传递
基本类型是值传递
引用类型值是地址,也是值传递
相关推荐
JavaScript高级编程 pdfJavaScript高级编程 pdfJavaScript高级编程 pdfJavaScript高级编程 pdf
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的...《Node.js高级编程》还涵盖了从使用定时器制定函数执行计划到创建和控制外部进程等内容,可以让你为运行、构建和测试自定义模块做好准备。
很详细透彻的 javascript 网上收集 的 但是不知道是那本书 知道的告诉我下 我去买本 入门与提高 javascript教程 入门与提高 javascript教程入门与提高 javascript教程
javascript高级编程,包括语言概述,语言基础,事件处理,对象编程,文档对象模型,windows对象,document对象
JavaScript 高级编程(成书).pdf JavaScript 高级编程(成书).pdf
JS高级编程设计.pdf 好资源 大家分享
javascript高级编程 快速学习 易学易懂
Javascript 高级编程主要JavaScript的基本语法,Document对象,文本对象,按钮对象,选择和隐藏对象,Location对象,history对象等等的属性和方法,最后讲述了Javascript的服务器编程;比较适合初学者;
javascript 高级编程 (第2版)pdf.part2
高级编程
javascript高级编程的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决...
[Wrox] Node.js 高级编程 (英文版) [Wrox] Professional Node.js Building Javascript Based Scalable Software (E-Book) ☆ 出版信息:☆ [作者信息] Pedro Teixeira [出版机构] Wrox [出版日期] 2012年10月23...
Node.js高级编程 PDF电子书下载 带书签目录 完整版
收集自网络,关于JavaScript编程的好教材,内容清晰完整。
javascript高级编程的 幻灯片文件
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个...
javascript高级编程ppt详细资料
目录: 第一章 javascript语言概述 第二章 JavaScript语言基础 第三章 JavaScript事件处理 第四章 JavaScript基于对象编程 第六章 string,math,array等数据对象 第七章 window及相关顶级对象 第八章 document对象
一、了解脚本的概念,掌握:JavaScrip语言基本语法、... 二、了解JavaScrip的各种数据类型,掌握各种运算符,表达式的运算。使用控制选择结构编写简单的程序。 三、了解各种对象的的概念,掌握各种对象的属性和方法。