new Object(构造器)
let obj1 = new Object()
//向空对象中添加键值对:
//方法1:对象名.属性名(key) = value(值)
obj1.name = '张三',
obj1.age = 18,
//方法2:对象名[属性名] = value
obj1['gender'] = '男',
obj1['hobby'] = '篮球'
字面量创建时直接添加 大概酱: let/var 对象名= {属性名:value(值).....}
let obj2 = {
productName: 'kunkun',
productAge: 18,
productGender: '男吧',
productHobby: '篮球0D5D222E.png唱ȪSGPic跳FaceTrapuool.exe'
}
在对象外边添加 value(值)
// 1、对象名.属性名 = value(值) 2、对象名[属性名] = value(值)
obj2.menli = 30
obj2['menliz'] = 40
修改
obj2.productAge = 20
obj2['productName'] = 'aikun'
删除
delete obj2.menli
delete obj2['menliz']
obj2.productAge = obj2.productAge + 70
console.log(obj2);
取值
console.log(obj2.productAge + '岁');
console.log(obj2.productName);

对象的比较
1、对象存在堆空间,基本数据存在栈空间,基本数据类型的字面量存在常量池
2、每一个对象在推空间中都有一个地址,对象名=地址
3、字面量和对象比较
== :比较值
====:比较值和数据类型
4、当对象和对象比较时只比较地址
let num = 'abc'
let str = 'abc'
let num1 = new Object('abc')
let str1 = new Object('abc')
console.log(num == str)
console.log(num === str)
console.log(num == str1)
console.log(num === str1)
console.log(num1 === str1)
当 obj1对象 赋值给 obj2对象 时会把对象地址一并赋值给了obj2
let obj1 = {
name : 'abc'
}
let obj2 = obj1
console.log(obj2)
console.log(obj1 === obj2)
值传递和地址传递:
值传递:
发生在基本数据类型之间,接收方修改数据不影响传递方的数据
地址传递:
发生在对象之间,传递方传递的是地址,接收方和传递方指向的是同一个对象,接收
方改变了传递方给的对象,那么传递方的对象也一并跟着改变
let str = 'abc'
console.log(str)
let str1 = str
str1 = str1 + 'd'
console.log(str1)
let obj = {
name: '张三',
age: '18'
}
console.log(obj)
let obj1 = obj
obj1.name = '李四'
console.log(obj1)
对象的解构
let str = {
productName : '张三',
productAge : '18',
productHobby : '篮球'
}
console.log(str);
var str1 = str.productHobby
var str2 = str.productAge
console.log(str1);
console.log(str2);
var {
productAge : age,
productHobby : hobby
} = str;
console.log(age);
console.log(hobby);
练习:
定义一个用户对象user:该用户有属性:ID、账号、密码、工作经历
定义一个工作经历对象workExpe
该对象有属性:ID、工作公司、职位
将workExpe对象赋值给user对象的工作经历属性
输出user对象的工作经历中的工作内容
定义一个变量attr=gender,将attr的值作为属性名添加到user对象中
定义一个空对象userCopy,遍历user对象,将所有遍历到的属性和值添加到空对象userCopy中
分别写一个值传递和地址传递的例子
let user = {
ID : 123456,
number : 654321,
password : 9876543,
experience : ''
}
console.log(user)
let workExpe = {
ID : 12345,
company : '无限公司',
position : '外交部部长'
}
console.log(workExpe)
user.experience = workExpe //将workExpe对象赋值给user对象的工作经历属性
console.log(user.experience)
user.attr = 'gender'
//定义一个空对象userCopy,遍历user对象,将所有遍历到的属性和值添加到空对象userCopy中
let userCopy = {}
for (const key in user) {
userCopy[key] = user[key]
}
console.log(userCopy)
//值传递
let express = '快递'
console.log(express)
let courier = express
console.log(courier)
//地址传递
let express1 = {
address : '阿里巴巴',
courier1 : '鳄梨'
}
console.log(express1)
let courier2 = express1
courier2.courier1 = '阿勒'
console.log(courier2)