对象
创建对象
JavaScript 创建对象的方法的产生是一个迭代的过程,因为已有方法的缺陷催生出了新的方法。
在这里我们先学习两种最基础的创建对象的方法,让我们能够对对象有一个初步的了解。
Object构造函数
var person = new Object();
字面量方式
var person = {};
对象的属性(property)
一个 JavaScript 对象可以有多个属性,每个属性或方法都有一个名字,我们叫做属性名,而每一个属性名都 对应着一个属性值。所以,对象的本质就是无序属性的集合,每一个属性都是一组键(属性名)值(属性 值)对,值可以是数据或者函数。一个对象中的每一个属性名都必须是唯一的。
对象属性的分类
数据属性:一般用于存储数据值。
访问器属性:不包含数据值,多用于get/set操作。
定义对象的数据属性
通过点运算符来操作一个对象的属性
var person = { name: "lisi", job: "SoftWare Engineer" }; person.name = "zhangsan"; person.age = 30; console.log(person.job);
通过[]操作一个对象的属性
1 var person = { 2 name: "lisi", 3 job: "SoftWare Engineer" 4 }; 5 person[name] = "zhangsan"; 6 person[age] = 30; 7 console.log(person["job"]);
删除对象的数据属性
可以用delete操作符删除一个不是继承而来的属性。
var person = { name: "lisi", job: "SoftWare Engineer" }; delete person.job;
对象的方法
定义对象的方法
定义对象的方法就像定义普通函数,唯一的区别是对象里的方法必须被赋给对象的某个属性。
//方式一 var person = { name: "lisi"; sayName: function(){ console.log("my name is " + this.name); } }; //方式二 var person = new Object(); person.sayName = function(){ console.log(" my name is " + this.name); }
调用对象的方法
对象方法的调用类似于对象属性的调用,同样具有以下两种方式
通过点运算符,来访问一个对象的方法
var person = {
name: "lisi";
sayName: function(){
console.log"my name is " + this.name);
}'
person.sayName(); //调用 person 对象的sayName方法
通过[]来访问一个对象的方法
var person = { name: "lisi"; sayName: function(){ console.log("my name is " + this.name); }' person["sayName"](); //调用 person 对象的sayName方法
删除对象的方法
可以用delete操作符删除对象的方法
var person = { name: "lisi"; sayName: function(){ console.log"my name is " + this.name); }' delete person.sayName; //方法名后面没有()
对象的遍历
for in循环
该方法依次访问一个对象及其原型链中所有可枚举的属性。
上面这句句话里,有两个词我们现在可能还不不太明白:原型链、可枚举。这两个概念我们后面都会讲,现在不不 能明白没关系,不影响我们理理解对象的遍历。
for(let key in person) { console.log(key); //name age job console.log(person[key]); //zhangsan 20 Doctor }
注意:当我们通过属性名 key 去获取属性值时,只能用中括号 [] ,不能用点运算符 .
Object.keys(Object)
var person = { name: "zhangsan", age: 20, job: "Doctor" } var arr = Object.keys(person); //["name","age","job"] for(let i = 0; i< arr.length; i++) { console.log(person[arr[i]]); //zhangsan 20 Doctor }
该方法返回一个数组,这个数组里包含了了当前对象自身的所有属性(不不包括原型中)的名称。