如果 a.b ,那么a就是对象,b是a的属性
如果 a.c(),那么a就是对象,c是a的方法
对象就是拥有一组属性和方法的集合
定义对象有两种方式:1.采用字面量赋值方式直接定义。2.采用构造函数的方式new一个对象
1.采用字面量赋值方式定义对象
let obj={
//定义属性
//定义方法
}
通过对象名.属性,调用对象的属性,可以获取属性的值,也可以修改属性的值,也可以添加新的属性
通过对象名.方法(),调用对象的方法,执行方法里面的代码
2.采用构造函数的方式new一个对象
可以直接new一个Object对象
let obj = new Object()
可以定义一个构造函数,再出new这个构造函数的对象
构造函数也称为:类,是自定义的一种类型
//定义学生类
functionStudent(形参...){
//定义属性(必须使用this.)
//定义方法(必须使用this.)
}
//创建学生对象
let s1 = new Student (实参...)
3.对象进阶
this
构造函数里面的this,用于给类定义成员(属性和方法)
方法里面的this,指向方法的调用者
箭头函数中没有this,如果在箭头函数中使用了this,会向外层寻找this的指向
如果所有的外层都没有this,最终会指向window对象
注意:用于var定义的成员(变量和方法)都会成为window对象的成员
解决this指向问题:
方式一:备份this
方式二:使用箭头函数
call apply bind
call apply bind 更改方法里面this的指向
1.使用call()改变方法里面,this的指向call()方法的第一个参数必须是指定的对象,方法的原有参数,挨个放在后面
2.使用apply(),也可以改变方法里面this的指向,第一个参是指定的对象,方法的原有参数,统一放到第二个数组参数中。
3.使用bind(),也可以改变方法里面this的指向,用法给call()一样call()是直接运行方法,bind()是返回新的方法,然后再重新调用。
将一个对象转为字符串
获取对象的属性值,有两种方式:
1.对象名.属性名
2.对象名["属性名"]
//定义一个手机对象
letphone={
name:"小米10",
color:'红色',
size:'1000*200*500',price:'2999'
}
//转成下面的字符串
//"name=小米10&color=红色&size=1000*200*500&price=2999"
for in 循环,可以循环出对象里面的所有的key,(key就是属性名)
在ES6中新增了获取对象所有key的方法 -> ECMAScript2015 其实就是最新版本的javascript标准
Object.keys(指定的对象),该方法可以获取指定对象的所有key,返回值是一个数组
Object.values(指定的对象),该方法可以获取指定对象的所有的value,返回值是一个数组