语言 = 数据结构 + 算法。首先对ECMA的数据结构做一个了解。
Javascript是一门高度抽象的面向对象的语言,一切皆对象。
1、什么是对象 ?(注意这里的对象是object,不是内置类型Object,注意区分大小写)
一个ECMA的程序是由许多可以互相通信的object组成。每个object是由一系列的属性(property)组成。
每个property可以看成一个容器,这个容器也具有一些属性,这些属性叫作attribute。
这个容器里存放的东西可以是其它的object,原始值(primitive value)或函数(function)。
每个object是ECMA的内置类型(built-in type)Object的成员。
每个primitive value是ECMA的内置类型Undefined,Null,String,Number,Boolean之一的成员。(以上即是ECMA语言的类型,ECMA还有另外一些特定类型)
function是个特殊的object,它是一个可调用的object。和一个object的属性联系在一起的function,我们叫它方法(method)。
ECMA已经定义了许多object供使用,这些定义好的object被称为内置对象(built-in object)。其中包括全局对象(global object)和异常对象(error object)。
全局对象包括:Object , Function , Array , String , Boolean ,Number , Math ,Date , RegExp , JSON
异常对象包括:Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError.
(这里又出现了一个Object ,这个全局对象Object是ECMA定义好的object,是内置类型Object的成员)
(对于String,Number,Boolean。以Number为例,对var a = 1这样的代码,返回值为原始值Number value。对 var a = new Number(1),返回值则为Number对象)
2、如何创建对象
ECMA中规定创建对象有两种方法:字面量(literal notation),构造函数(constructor)。
比如以下代码:
在Chrome的console中进行查看
定义了一个未赋值的a变量,它的返回值是原始值undefined.
用字面量创建对象的方法定义了一个b,并给它传递了两个属性。(咦,这不是个JSON吗?其实我们平常所说的JSON,是指对象字面量。即Object{}这样的形式。ECMA另外规定了JSON对象,和这里的字面量不是一回事)
c是用构造函数创建的对象。构造函数是创建一个实例时用到的函数,表现形式就是 new 运算符。我们new了一个Object的实例 c。
P.s 关于字面量的解释