对象是什么?
在JavaScript中,所有事物都是一个对象。
每个对象都有自己的属性,其中包含的属性值也各不相同。
每个对象都是一个变量,但是对象可以拥有多个值(多个变量),
每个值以key:value键值对的方式呈现。
对象的创建
对象的创建有两种方式:字面量模式、构造函数
字面量模式
用 {} 包裹起来,属性之间用 “ , ” 隔开, 属性名和属性值之间用 “ : ” 隔开
var person = {
name:"zzy",
age:17,
color:"orange",
sayname: function(){
console.log("My name is", this.name);
}
}
构造函数模式
使用Object或者使用自定义函数来初始化对象
var person1 = new Object();
person1.name = "labi";
person1.age = 17;
person1.Sayname = function(){
console.log(this.age);
}
// 等价于
var person1 = {};
person1.name = "labi";
person1.age = 17;
new关键字的执行过程
- new构造函数可以在内存中创建了不空的对象
- 构造函数里面的this都会指向新创建的对象
- 执行构造函数里面的代码,给这个空对象添加属性和方法
- 返回该对象
对象的访问
属性访问
- 点访问:
点后面直接跟的是对象的属性,如果属性存在可以访问到,如果属性不存在,得到undefined
- 中括号访问:
括号 中 放的是变量,中括号可以将该变量进行解析。
obj.name
obj['name'] //'zzy'
name = "age"
obj['age'] //17
方法的访问
方法的访问主要是为了执行该对象中的方法,需要按照函数调用的方式去使用
//以下执行结果不一样
obj.sayName;
obj.sayName();// 方法的正确使用
遍历对象中的属性
普通版的for循环可以遍历数组,但无法遍历对象
增强版的for循环:
for..in用于遍历数组或者对象的属性
// 数组
var arr = ['a', 123, 7]
// 对象
var obj = {name:'zhangsan', age:17}
// for-in 遍历数组
for(var index in arr){
console.log(arr[index]);
}
// for-in 遍历对象
for(var key in obj){
console.log(key + '--' + obj[key]);
}
新增删除属性
- 只能删除对象的自有属性
delete obj.pro // 可以通过点访问删除
delete obj[“proname”] // 可以通过中括号访问删除
delete obj.sayName //从obj对象中删除sayName属性
- 新增属性
obj.要新增的属性名=”属性值”