文章标题
2017-05-16 10:32
253 查看
变量、作用域
基本类型和引用类型
基本类型:值保存* Undefined、Null、Boolean、Number 和 String
对象类型:引用保存,可以增加动态属性
* Object
执行环境及作用域
每个函数有一个执行环境嵌套的执行环境构成作用域链
标识符解析沿着作用域链一层层搜索
try-catch 会创建作用域
with会创建作用域
没有块级作用域
函数
函数是对象没有重载 :
以 像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回
函数声明 VS 函数表达式
解析器会率先读取函数声明,并使其在执行 9 任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真 正被解释执行
函数内部属性
arguments
arguments.callee
this:this 引用的是函数据以执行的环境对象——或者也可以说是 this 值(当在网页的全局作用域中调用函数时, this 对象引用的就是 window)
caller:ECMAScript 5 也规范化了另一个函数对象的属性
函数属性&方法
length:希望接收的命名参数的个数
prototype:对于 ECMAScript 中的引用类型而言,prototype 是保存它们所有实例方法的真正所在。换句话说,诸如 toString()和 valueOf()等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访 问罢了。在创建自定义引用类型以及实现继承时,prototype 属性的作用是极为重要的(第 6 章将详 细介绍)。在 ECMAScript 5 中,prototype 属性是不可枚举的,因此使用 for-in 无法发现。
apply()和 call():在特定的作 用域中调用函数,实际上等于设置函数体内 this 对象的值。首先,apply()方法接收两个参数:一个 是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array 的实例
在严格模式下,未指定环境对象而调用函数,则 this 值不会转型为 window。 除非明确把函数添加到某个对象或者调用 apply()或 call(),否则 this 值将是 undefined。
单体内置对象
Global:属于任何其他对象的属性和方法,最终都是它的属性和方法。事实上,没有全 局变量或全局函数;所有在全局作用域中定义的属性和函数,都是 Global 对象的属性。encodeURI、encodeURIComponent、eval、window
面向对象
?????函数表达式
函数声明 VS 函数表达式
函数声明
函数声明提升,执行代码之前先读取函数声明函数表达式
表达式是匿名函数,结果是一个值,可以赋予变量递归
“`javascript““
闭包
概念
有权访问另一个函数作用域中变量的函数。创建闭包常见的方式,是在一个函数内部创建另一个函数。