对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...
此外,JavaScript 允许自定义对象。
JavaScript 提供多个内建对象,比如 String、Date、Array 等等。
对象只是带有属性和方法的特殊数据类型。
对象的属性
属性是与对象相关的值。
访问对象属性的语法是:
objectName.propertyName
比如我们可以获取 String 对象的长度
var message="Hello World!";
console.log(message.length); // 12
对象的方法
方法是能够在对象上执行的动作。
访问对象方法的语法是:
objectName.methodName()
使用 String 对象的 toUpperCase() 方法来将文本转换为大写:
var message="Hello world!";
console.log(message.toUpperCase());
创建对象
直接创建
创建对象的一个新实例,并向其添加了四个属性:
person=new Object(); // 或者使用 {}
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
字面量
我们也可以用过字面量来创建对象:
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;
}
有了对象构造器,我们就可以使用new
来创建新的对象
var myFather=new Person("Bill","Gates",56,"blue");
var myMother=new Person("Steve","Jobs",48,"green");
ES5中没有类的概念,一把使用函数构造器充当类的声明。
作为初学者,以下代码:
function Person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
var myFather=new Person("Bill","Gates",56,"blue");
我们可以简单认为其等价于:
function Person(firstname,lastname,age,eyecolor){
var obj = {}
obj.firstname=firstname;
obj.lastname=lastname;
obj.age=age;
obj.eyecolor=eyecolor;
return obj;
}
var myFather = Person("Bill","Gates",56,"blue");
当然还有不一样的地方,我们将在原型链给大家讲解。
遍历对象属性
for...in 循环
var person={fname:"Bill",lname:"Gates",age:56};
for (x in person){
console.log(x, person[x])
}
既然数组也是对象,数组可以使用类似的方法遍历所有元素
var arr = ["a", "b", "c"]
for (x in arr){
console.log(x, arr[x])
}
我们可以看到多了一个 length
属性,这是因为 length
是 Array 对象属性,遍历对象属性把所有属性都遍历出来了。
getOwnPropertyNames
我们可以使用 Object.getOwnPropertyNames
获取对象的所有属性。
var person={fname:"Bill",lname:"Gates",age:56};
Object.getOwnPropertyNames(person) // ["fname", "lname", "age"]
我们可以用这办法获取对象的键,那如何获取属性的值那?