对象
内置对象:自带的都叫内置对象
自定义对象(JSON式对象)
一.概念
JS中对象是一组无序数据的列表,每一条数据都是由“键:值”组成。
其中,值可以是任意数据类型,但是键只能是字符串(键不用加引用)。
二.创建对象
1·字面量
let boj = [];
2.构造函数
let obj2 = new object();
三·对象的属性
当对象中的某一条数据,它的键所对应的值是'非函数'类型,那么这条数据就叫做对象的属性.
对象的属性
let student = {
name:'王海枫',
age: 20
};
1.操作属性
1)点运算符 .
查看:
示例1: console.log(student.name);
示例2: console.log(student.age);
修改:
student.age = 18;
console.log(student.age);
添加:
studet.gender = '女';
删除:
delete student.age;
console.log(student);
2)中括号 [ ] 键是一个变量名的时候使用中括号
console.log(student["name"]);
student["age"] = 18;
student["gender"] = "女";
delete student["age"];
let student = {
name:'马冬梅',
age:20,
};
let a = "name";
console.log(student[a]);
console.log(student.name);
四·对象的方法
当对象中的某一条数据,它的键所在对应的值是“函数”类型,那么,这条数据就叫做对象的方法。
1.操作方法
let student = {
name:'王海枫',
age:20,
friends:['马鑫宇','王海枫'],
sayName:function(){
console.log('我的名字叫马冬梅');
}
}
方法调用: student.sayName();
中括号方法调用: student"sayName";
五·对象的遍历
let student = {
name:'马冬梅',
age:20,
friends:['李子明','王海枫'],
sayName: function(){
console.log('我的名字叫李爸爸');
}
}
for (let key in student){
console.log(student[key]);
}
六·对象的扩展
1·对象的解构
let student = {
name: 'hanmeimei',
age: 20
}
简写: 当键和值同名的时候可以省略值和冒号
let {name:a,age:b} = student; let {name,age} = student;
console.log(a,b); console.log(name,age);
默认值:
let{name = 'A',age = 20} = {name:'hanmeimei',age:18};
console.log(name,age);
七·this关键字
let student = {
name:'马冬梅',
age:20,
friends:['李子明','王海枫'],
sayName:function(){
console.log('我的名字叫'+ this.name);
}
}
student.name = '李子明';
student.sayName();
1·方法中的this:一个方法中的this等于当前该方法所属的对象。
在方法中询问该对象的属性,通过"this.键名"访问
2·函数中的thin:一个函数中的this指向全局对象
let student = {
name: 'WangHaiFeng'
}
name = 'LiZiMing';
function sayName() {
console.log(this.name);
}
sayName();
student.fn = sayName;
student.fn();
name = '123';
function sayName(){
console.log(this.name);
}
sayName(); //函数
let student = {
name:'456',
sayName:function(){
console.log(this.name);
}
}
student.sayName(); //方法
this的具体指向,是在调用时确定的。
function中的this,是可变的。
如果function作为函数调用,其内部的this指向全局。
如果function作为方法调用,其内部的this指向当前方法所属对象