注:此为个人学习笔记,内容可能有些混乱,仅供参考。
1、 函数
如果函数无明确的返回值,或调用了没有参数的 return 语句,那么它真正
返回的值是 undefined 。
ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。
任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。
a rguments 访问参数
检测函数的 传递参数个数 ,引用属性 arguments.length
检测函数 申明参数的个数 , 函数名.length
函数实际上是功能完整的对象。
Function 类可以表示开发者定义的任何函数
用 Function 类直接创建函数的语法如下:
var function_name = new function(arg1, arg2, ..., argN, function_body)
函数只不过是一种引用类型
闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。
2、对象
在 ECMAScript 中,对象由特性( attribute )构成,特性可以是原始值,也可以是引用值。如果特性存放的是函数,它将被看作对象的方法( method ),否则该特性被看作对象的属性( property )
Object 对象 , ECMAScript 中的所有对象都由这个对象继承而来, Object 对象中的所有属性和方法都会出现在其他对象中 。
Object 对象具有下列属性:
c onstructor :对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
p rototype :对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。
Boolean 对象 是 Boolean 原始类型的引用类型。
要创建 Boolean 对象,只需要传递 Boolean 值作为参数:
var oBooleanObject = new Boolean(true);
在 Boolean 表达式中,所有对象都会被自动转换为 true
Number 对象 是 Number 原始类型的引用类型。要创建 Number 对象,如
var oNumberObject = new Number(68);
具有 toFixed()、 toExponential() 和 toPrecision() 等方法
String 对象
String 对象是 String 原始类型的对象表示法,它是以下方式创建的:
var oStringObject = new String("hello world");
instanceof 运算符
在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object" 。
instanceof 方法要求开发者明确地确认对象为某特定类型。例如:
var oStringObject = new String("hello world");
alert(oStringObject instanceof String); //输出 "true"
对象废除
ECMAScript 拥有无用存储单元收集程序( garbage collection routine ),意味着不必专门销毁对象来释放内存。
把对象的所有引用都设置为 null ,可以强制性地废除对象。
早绑定和晚绑定
所谓绑定(binding ),即把对象的接口与对象实例结合在一起的方法。
早绑定(early binding )是指在实例化对象之前定义它的属性和方法,这样编译器或解释程序就能够提前转换机器代码。在 Java 和 Visual Basic 这样的语言中,有了早绑定,就可以在开发环境中使用 IntelliSense (即给开发者提供对象中属性和方法列表的功能)。 ECMAScript 不是强类型语言,所以不支持早绑定。
另一方面,晚绑定(late binding )指的是编译器或解释程序在运行前,不知道对象的类型。使用晚绑定,无需检查对象的类型,只需检查对象是否支持属性和方法即可。 ECMAScript 中的所有变量都采用晚绑定方法。这样就允许执行大量的对象操作,而无任何惩罚。
本地对象
ECMA-262 把本地对象( native object )定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。它们包括:
Object
Function
Array
String
Boolean
Number
Date
RegExp
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError