JavaScript 对象
对象只是带有属性和方法的特殊数据类型
JavaScript 提供多个内建对象,比如 String、Date、Array 等等
- 布尔型可以是一个对象
- 数字型可以是一个对象
- 字符串也可以是一个对象
- 日期是一个对象
- 数学和正则表达式也是对象
- 数组是一个对象
- 甚至函数也可以是对象
访问对象的属性
属性是与对象相关的值
访问对象属性的语法是
objectName.propertyName
下面的代码使用了 String 对象的 length 属性来获得字符串的长度
var message="Hello World!"; var x=message.length;
上面的代码执行后,x 的值将是 12
访问对象的方法
方法是能够在对象上执行的动作
可以通过以下语法来调用方法
objectName.methodName()
下面的代码使用了 String 对象的 toUpperCase() 方法来将文本转换为大写
var message="Hello world!"; var x=message.toUpperCase();
上面的代码执行后,x 的值将是 HELLO WORLD!
创建 JavaScript 对象
JavaScript 允许我们定义并创建自己的对象
创建新对象有两种不同的方法
- 定义并创建对象的实例
- 使用函数来定义对象,然后创建新的对象实例
创建直接的实例
下面的代码创建了对象的一个新实例,并向其添加了四个属性
var person = new Object(); person.firstname="John"; person.lastname="Doe"; person.age=50; person.eyecolor="blue";
上面的代码也可以使用对象 literals 来简写
var person={ firstname:"John", lastname:"Doe", age:50, eyecolor:"blue" };
使用对象构造器
可以使用函数来构造对象
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }
JavaScript 中,this 通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)
创建 JavaScript 对象实例
一旦有了对象构造器,就可以创建新的对象实例
var myFather=new person("John","Doe",50,"blue"); var myMother=new person("Sally","Rally",48,"green");
把属性添加到 JavaScript 对象
可以通过为对象赋值,向已有对象添加新属性
下面的范例,我们给 person
对象添加这些新属性:firstname、lastname、age 以及 eyecolor
var person = {}; person.firstname="John"; person.lastname="Doe"; person.age=30; person.eyecolor="blue"; x=person.firstname;
上面的代码执行后,x 的值将是:John
把方法添加到 JavaScript 对象
方法只不过是附加在对象上的函数
可以在构造器函数内部定义对象的方法
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; this.changeName=changeName; function changeName(name) { this.lastname=name; } }
changeName() 函数 name 的值赋给 person 的 lastname 属性
然后我们就可以尝试调用 changeName()
方法
var my=new person("John","Doe",50,"blue"); my.changeName("Doe");
JavaScript 类
JavaScript 是基于原型( prototype ) 的语言,JavaScript 不使用类
JavaScript 中,不会创建类,也不会通过类来创建对象
JavaScript 基于 prototype,而不是基于类的
JavaScript for...in 循环
我们可以使用 for...in 语句循环遍历对象的属性
语法
for (variable in object) { //执行的代码... }
for...in 循环中的代码块将针对每个属性执行一次
下面的代码用于循环遍历 person 对象的属性
var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=txt + person[x]; }