————from CodeForDream
数据 和 过程 是构成javascript的基本元素。
数据 分两类:
- 简单数据——有undefined,null,boolean,number和string 五种
- 复杂数据——只有一种,即对象(object)
过程 只有一种形式,就是 function
一、简单数据类型
1 . undefined : 这个值表示变量不含有值。
若 typeof(data) 的返回值是字符串 'undefined' ,即变量data的数据类型是 undefined,data不含有值。
注:typeof是javascript提供的运算符,运行后会返回括号之中数据的数据类型。如 typeof('hello') 返回结果是 'string',则'hello'的类型是 字符串。
2 . null : 这个值表示变量为空。
若 typeof(data) 的返回值是字符串 'null' ,即变量data的数据类型是 null,即data为空。
undefined 和 null 的区别是:typeof(undefined) 返回值是 'undefined',typeof(null) 返回值是字符串 'object'(对象类型)。
3 . boolean : true 或 false 代表布尔值。
var data = true,typeof(data) 返回值是字符串 'boolean' ,即变量data的数据类型是 布尔值。
4 . number : javascript 只有一种数字类型。数字可以带小数点,也可以不带。如:123 和12.3
var data = 123,typeof(data) 返回值是字符串 'number' ,即变量data的数据类型是 数字。
5 . string : 前面我们说起过,字符串是字符的载体,而且必须被成对的引号包围。 如: 'hello world!'
var data = 'hello world!',typeof(data) 返回值是字符串 'string' ,即变量data的数据类型是 字符串。
二、复杂数据类型
对象(object)
形式一
{} 花括号,用来定义一个对象
括号内部,属性以键值对的形式,如 key : value 来定义,又称属性名和属性值。属性间由逗号分隔。
例如 var student={name:'Tom', finish_work:true, id:123};
对象 (student) 有三个属性:name、finish_work 、 id
Ps:空格和属性间的换行无关紧要。也可以写成:
var student = { name : 'Tom', finish_work : true, id : 123 };
对象属性值有两种获取方式:
name = student.name;
或 name = student['name'];
都可以将'Tom'取出来赋给变量name。在取值方面,两者是完全等价的。 唯一的区别在于使用场景,后者可以用于动态的取值,我可以通过变量传递我要访问的属性名。
形式二 数组
对象(object)可以由一个或者多个属性组成。比如期末成绩的数据可以详细地用对象(object)表示为:
var grades ={ Maths : 80, Chinese : 82, Biology : 79, Physics : 86};
仅需要记录成绩的数值时,可以采用对象的另一种格式 "数组(array)"。
var scores = [ 80, 82, 79, 86];
如上所示,数组由方括号包围。在括号内部,数据以独立值的形式 value 来定义。数据值之间由逗号分隔。
取scores数组中第一个值的方法是:
var scores = scores[0];
由于数组的下标(序号)是从零开始的,所以第一个项目是[0],第二个是[1],以此类推。
类与对象
1.对象的字面量表达式,通常称为JSON(JavaScript Object Notation)
对象 = { 属性名 : 属性值, 属性名 : 属性值, ┅ ┅ }
其中,属性名可以是标识符,字符串,或是数值.属性值可以是任意的数据值,对象或者函数.
{ x: 2, say_hello: function(){ console.log( "Hello!" ) } }
//属性值包含函数
//像上面这种没有函数名的函数叫做"匿名函数"
2.对象的new表达式
JavaScript中new表达式的作用是创建一个对象,我们一般称通过new表达式创建的对象为 实例对象(简称实例).可以像下面这样使用该表达式.
var robot = new Object(); //生成一个实例对象robot
robot.name = "Cat"; //定义实例对象robot的name属性,并赋值
robot.age = 1;
robot.info = {height: 120, weight: 40}
robot.say_hello = function(){ console.log("Hello!") };
用new创建的对象,需要一个模板,就像工业铸造的模具一样。每new一次,便铸造了一个新的实例。 这个对象 模板 被称之为 类。这个new的过程叫做实例化。
上面代码中,new 表达式后面的 Object 就是类名。是通过new表达式,由类生成对象的用法。
除了类的实例化,我们还可以直接以字面量表达式的方式定义了一个对象player:var player = {code : 2,name : 'Tom',status : 'active' }
三、函数的类型
typeof(函数名)
输出"function",即函数的类型。
四、对象的函数
1 、方法调用(调用对象的函数属性)
对象的函数属性有一种区别于一般函数的名称,叫做 方法。相应的,调用对象的函数属性时就叫做方法的调用。
在对象内部的函数(即方法)的调用:
var robot = {
x : 2,
say_hello : function(){ console.log( "Hello!" ); }
};
robot.say_hello();
2 、构造函数调用(相当于类的用法,用来生成对象)
在 对象的new表达式 内容的代码里:
var robot = new Object(); //生成一个对象robot
Object()是JavaScript内置对象Object的构造函数。
3 、动态访问对象的函数
对象的函数属性依然是函数,所以除了点+函数名的方式访问,对象也可以通过[]的方式访问。比如
var robot = {
x : 2,
say_hello : function(){ console.log( "Hello!" ); }
};
robot["say_hello"](); //等价于 robot.say_hello();