前言
“万物皆对象,没有对象就new一个对象”
‘你有对象吗‘,在js中,对象可不是女朋友,对象可是很流批的,几乎“所有事物”都是对象。例如定义一辆车为对象,那么它的颜色啊,大小,轮子数目啊等,都是它的属性下面我们来好好说说对象。
对象
前面我们说了数组可是非常非常重要的,其实数组也是对象。数组是有序性的,它的下标是有顺序的。而对象是无序性。
对象的定义
描述同一类型的事物{属性:属性值,方法:函数},属于引用数据类型
字面量声明 var obj = {};
构造函数声明 var obj = new Object();
var dog = {
name : '二哈',
age : 3 ,
sex : '公',
say : function () {
console.log('汪');
}
}
// 实例化对象 -- 空对象
var obj = new Object() ;
// 赋值
obj.name = '奔驰' ;
obj.color = 'pink' ;
obj.price = '100w' ;
对象的访问方式:
- 两种访问方式:
dog['name']dog['age']与数组类似
点语法dog.namedog.age
对象的遍历
for in的方法在数组里面已经说过了,但是这是对象唯一的遍历方法。一般定义key遍量为键值。
for (var key in dog) {
console.log(key);//打印属性名
console.log(dog[key]);//打印属性值
}
对象的浅复制与深复制
前面我也说了数组的浅复制与深复制,其实差不多,因为,数据就是对象嘛,浅复制复制的是地址,深复制复制的是值。
浅复制:
var person1 = {
name : '方总' ,
age : 18
}
//浅复制
var person2 = person1 ;
person2.name = '师爷' ;
console.log(person1) ; //此时person1的name属性也是'师爷'
深复制:
//深复制 , 通过遍历赋值
var person2 = new Object() ;
for(var key in person1){
//将person1的值通过遍历赋给person2
person2[key] = person1[key] ;
}
console.log(pesson2) ;
person2.age = 20 ;
console.log(person1) ;
//此时person2的age属性变成了20,但是person1的属性还是18
补充:说说模板字符串 变量 ${},键盘数字1的左边,看下面语法
var a = 'hello' ;
// document.write('<h1>' + a + '</h1>')/可用下面的表示
document.write(`<h1>${a}</h1>`)