JS 对象

创建时间:2019.02.22 修改时间:2019.03.24

JS 中的所有事物都是对象:字符串、数值、数组、函数……

对象是一种特殊数据类型,可以称为“键值对的容器”。

“键”必须为字符串,具有唯一性,如果有两个重复的“键”,则以最后赋值为准。

“值”可以是函数,称为对象的方法。也可以是除函数和 null、undefined 以外的任意数据类型,称为对象的属性。

自定义对象

1. 直接创建对象的实例:

var person = new Object();
person.firstname = "John";
person.lastname = "Doe";
person.age = 50;
person.eyecolor = "blue";

访问对象的属性:

var x = person.firstname;       // 返回 John
var x = person["firstname"];    // 返回 John

也可以通过以下语句直接创建对象实例:

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

从中可以看出对象这一数据类型接近于数组,只是对象中元素有对应的名字,而数组没有(JS 中数组不支持用名字索引元素,只允许数字索引)。

因此当为数组元素定义名字索引时,JS 会把数组转换为标准对象。

var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;

此时,数组的方法和属性将不再适用。

var x = person.length;    // 返回 0
var y = person[0];        // 返回 undefined

2. 通过函数构造对象,再创建对象实例:

function person(firstname, lastname, age, eyecolor)
{
    this.firstname = firstname;
    this.lastname = lastname;
    this.age = age;
    this.eyecolor = eyecolor;

    this.fullName = fullName;
    function fullName()
    {
        return this.firstName + " " + this.lastName;
    }
}

实例化对象:

myMother = new person("Sally", "Rally", 48, "green");

调用对象方法:

myMother.fullName();    // 加括号返回函数执行结果:function () { return this.firstName + " " + this.lastName; }
myMother.fullName;    // 不加括号返回函数表达式:John Doe

遍历对象中的元素

var x;
var txt="";
var person={fname:"Bill",lname:"Gates",age:56};
for (x in person){
	txt = txt + person[x];    // 返回 BillGates56
}