初识对象
-
面向对象的特征
- 封装性、继承性、多态性
- 对象是键值对的集合:对象是由属性和方法构成的 (ps:也有说法为:对象里面皆属性,认为方法也是一个属性)
-
对象属性操作
var student = {
name: 'sunny',
age: 20,
number: '11034P',
department: 'newEnergy',
score: function(){
return '成绩查询系统!';
},
job: function(){
return '就业查询系统!';
}
}
var arr = [];
// .语法
// .语法后面不能使用js中的关键字、保留字(class、this、function。。。)
// .语法后面不能使用数字
// .语法后面可直接执行方法函数
console.log(student.name);
console.log(student.score());
// []语法
// []内部必须用引号引入变量名 (student['number']
// ["class"]、["this"]等保留字都可以随意使用
// [0]、[1]、[2]也可以使用 ? 为什么obj[3]==obj["3"]
// 甚至还可以这样用:["[object Array]"] jquery里面就有这样的实现
// 也可以这样用:["{abc}"] 给对象添加了{abc}属性
console.log(student['age']);
console.log(student['job']);
// 添加属性
student['[object Array]'] = 240;
student['{object}'] = {'arts':85, 'sports': 95};
for(key in student){
arr.push(key);
}
console.log(student);
console.log(arr);
arr = [];
// 修改属性
student.gender = 'man';
student['direction'] = function(){
return '人工智能与图形操作';
}
for(key in student){
arr.push(key);
}
console.log(student);
console.log(arr);
arr = [];
// 删除属性
delete student.number;
for(key in student){
arr.push(key);
}
console.log(student);
console.log(arr);
arr = [];
- 获取对象长度的方法
- 对象的长度不能用.length获取
- Object具有一个keys属性,可以返回json对象的key的数组
- Object可以使用in运算符
var student = {
name: 'sunny',
age: 20,
number: '11034P',
department: 'newEnergy',
score: function(){
return '成绩查询系统!';
},
job: function(){
return '就业查询系统!';
}
}
var arr = [];
arr = Object.keys(student);
console.log(arr.length);
arr = [];
for(key in student){
arr.push(key);
}
console.log(arr.length);
arr = [];
console.log('name' in student);
- 对象的浅拷贝与深拷贝
// 浅拷贝
var student = {
name: 'sunny',
age: 20,
number: '11034P',
department: 'newEnergy',
score(){
return '成绩查询系统!';
},
job(){
return '就业查询系统!';
}
}
var simple = obj=>{
let newObj = {};
for(let key in obj){
newObj[key] = obj[key];
}
return newObj;
}
var sunny = simple(student);
console.log(sunny);
// 深拷贝
var student = {
name: 'sunny',
age: 20,
number: '11034P',
department: 'newEnergy',
score: {
arts: 95,
sports: 85,
program: 95
},
job(){
return '就业查询系统!';
}
}
var deepCopy = obj=>{
var newObj = {};
for(let key in obj){
newObj[key] = (typeof obj[key] === 'object') ? deepCopy(obj[key]) : obj[key];
}
return newObj;
}
var sunny = deepCopy(student);
console.log(sunny);