Symbol(符号)(第六版新增)RegExp(正则表达式)
JavaScript 中null和undefined是不同的,前者表示一个空值(non-value),必须使用null关键字才能访问,后者是“undefined(未定义)”类型的对象,表示一个未初始化的值,也就是还没有被分配的值。我们之后再具体讨论变量,但有一点可以先简单说明一下,JavaScript 允许声明变量但不对其赋值,一个未被赋值的变量就是undefined类型。还有一点需要说明的是,undefined实际上是一个不允许修改的常量。
对象
JavaScript 中的对象可以简单理解成“名称-值”对,不难联想 JavaScript 中的对象与下面这些概念类似:
Python 中的字典Perl 和Ruby 中的散列(哈希)C/C++ 中的散列表Java 中的 HashMapPHP 中的关联数组
这样的数据结构设计合理,能应付各类复杂需求,所以被各类编程语言广泛采用。正因为 JavaScript 中的一切(除了核心类型,core object)都是对象,所以JavaScript 程序必然与大量的散列表查找操作有着千丝万缕的联系,而散列表擅长的正是高速查找。
“名称”部分是一个 JavaScript 字符串,“值”部分可以是任何 JavaScript 的数据类型——包括对象。这使用户可以根据具体需求,创建出相当复杂的数据结构。
有两种简单方法可以创建一个空对象:
var obj=new Object();
和:
var obj={};
这两种方法在语义上是相同的。第二种更方便的方法叫作“对象字面量(object literal)”法。这种也是 JSON 格式的核心语法,一般我们优先选择第二种方法。
学习 JavaScript 最重要的就是要理解对象和函数两个部分。最简单的函数就像下面这个这么简单:
functionadd(x, y){var total= x+ y;return total;}
这个例子包括你需要了解的关于基本函数的所有部分。一个 JavaScript 函数可以包含 0 个或多个已命名的变量。函数体中的表达式数量也没有限制。你可以声明函数自己的局部变量。return语句在返回一个值并结束函数。如果没有使用return语句,或者一个没有值的return语句,JavaScript 会返回undefined。
关键字this。当使用在函数中时,this指代当前的对象,也就是调用了函数的对象。如果在一个对象上使用点或者方括号来访问属性或方法,这个对象就成了this。如果并没有使用“点”运算符调用某个对象,那么this将指向全局对象(global object)。
我们引入了另外一个关键字:new,它和this密切相关。它的作用是创建一个崭新的空对象,然后使用指向那个对象的this调用特定的函数。注意,含有this的特定函数不会返回任何值,只会修改this对象本身。new关键字将生成的this对象返回给调用方,而被new调用的函数成为构造函数。习惯的做法是将这些函数的首字母大写,这样用new调用他们的时候就容易识别了。