- 链式作用域
变量的作用域是整个函数,不是代码块
变量不可以被声明函数外部的程序引用,可以被声明函数内部的函数引用。
开发
声明函数内部一个变量不管声明在什么地方,函数内部都可以访问到。
声明函数内部一个变量不管声明在什么地方,函数内部子函数都可以访问到。
运行
声明函数运行一次,会产生一个变量放到内存中。运行完成如果内部函数对象被保留到外部,并且内部函数可能在运行时依赖该变量,则该变量一直留存在内存中。
声明函数再运行一次,会再产生一个变量放到内存中。当然也会再产生一些内部函数被保留到外部。这些变量,函数和上面的不是同一批。
- 闭包
就是声明函数的内部定义了变量,并且内部有函数引用了变量,并且内部函数会被保留到外部。
那么一次声明函数的运行,就产生了一套闭包的环境。函数对象主要是函数的职责,当然它也是对象,但不建议给这个对象赋属性,方法等其他职责,以免混乱。
函数对象主要应该是运行,是产生一个空对象或用另一个对象充当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高级编程"这本书深入探讨了这门语言的高级特性和最佳实践,旨在帮助开发者提升技能水平,实现更高效、更可靠的代码编写。以下是该书可能涵盖的一些关键知识点: 1. **基础语法**:包括变量、数据类型...
Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的...《Node.js高级编程》还涵盖了从使用定时器制定函数执行计划到创建和控制外部进程等内容,可以让你为运行、构建和测试自定义模块做好准备。
很详细透彻的 javascript 网上收集 的 但是不知道是那本书 知道的告诉我下 我去买本 入门与提高 javascript教程 入门与提高 javascript教程入门与提高 javascript教程
"JavaScript高级编程"这本教材深入探讨了这一语言的高级特性和实践技巧,旨在帮助开发者提升技能,掌握JavaScript的精髓。 该书可能涵盖以下几个重要的知识点: 1. **基础语法**:JavaScript的基础包括变量、数据...
"JavaScript高级编程"这个主题深入探讨了这门语言的高级概念和技术,旨在帮助开发者从初级水平迅速提升到高级水平,实现快速学习和易学易懂的目标。 首先,我们要理解JavaScript的基本语法和数据类型,包括变量、...
JavaScript是一种广泛使用的脚本语言,...JavaScript高级编程是一本全面介绍JavaScript语言的书,尤其适合初学者,通过这本书的学习,可以为Web开发打下坚实的基础,理解并运用JavaScript来增强网页的交互性和功能性。
学习JavaScript高级编程技术,首先需要理解脚本语言的概念。脚本语言是相对于编译型语言而言的,它们通常不需要预编译,而是直接由解释器执行。JavaScript就是这样的脚本语言,它在网页加载时被解释执行,可以实时...
"JavaScript高级编程"这本书深入浅出地介绍了这一语言的各个方面,旨在帮助初学者和有经验的开发者进一步提升技能。以下是对该书内容的详细概述: 1. **基础语法**:JavaScript的基础始于变量、数据类型(包括原始...
JavaScript是一种广泛使用的客户端脚本编程语言,主要用于开发Web应用程序。它能够让开发人员快速创建交互式的网页,并将各种强大的Web对象(如HTML、XML、Javaapplet、flash等)有机结合起来,从而便捷地生成可在...
根据提供的标题、描述、标签及部分内容,我们可以推测这本书——《JavaScript高级编程(第2版)》第二部分的主要内容涉及到了JavaScript的高级应用和技术细节。尽管给出的部分内容并未包含实际的文字内容,但从书名...
javascript高级编程的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点、JavaScript与浏览器的交互、更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决...
《Professional Node.js 高级编程》是一本由Pedro Teixeira编著的专业技术书籍,主要探讨了Node.js这一强大的JavaScript后端开发平台。这本书详细介绍了如何利用Node.js进行高效、高性能的应用程序开发,旨在帮助...
《Node.js高级编程》这本书是Node.js开发者的宝贵资源,它深入探讨了这个流行的JavaScript运行环境的高级概念和实践技巧。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,允许开发者使用JavaScript进行服务器...
JavaScript高级编程是面向C#程序员的一种技术,旨在简化代码并实现更高效的效果。JavaScript作为一种功能强大的脚本语言,它的灵活性允许开发者在对象创建后动态定义其属性,这在早期的JavaScript开发中尤其常见。...
javascript高级编程的 幻灯片文件
"javascript高级编程v3"这个主题,显然聚焦于深入理解JavaScript的核心概念、高级特性以及最新版本的更新内容。JavaScript高级编程通常涉及以下几个关键知识点: 1. **基础语法**:包括变量声明(var, let, const)...
这份“js高级编程资料”显然是一份深入学习JavaScript的资源集合,可能包含了公司的内部培训实例,旨在帮助开发者提升其在JavaScript领域的专业技能。下面,我们将详细探讨JavaScript的一些核心知识点。 1. **基础...
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个...
javascript高级编程ppt详细资料