2023-5-25(第十七天)

56 阅读1分钟

对象 Object

开发方式

面向过程

把事物拆分成几个步骤,按照一定的顺序执行

面向对象

把实物抽象成对象,给对象赋予一些属性和方法,然后让对象去执行自己的方法

面向对象的三大特点:封装、继承、多态

封装/创建/定义对象

直接量方式

let obj={
    "属性名":"属性值",
    ...
    "方法名":function(){},
    ...
}
访问对象的属性和方法
obj.属性名   <===>  obj["属性名"]
obj.方法名()    <===>   obj["方法名"]()
​
//访问到不存在的属性会返回undefined
添加属性和方法
obj.属性名=属性值
obj.方法名=function(){}
遍历对象
for(let i in obj){}
//遍历对象时,想要拿到当前属性的属性值要用obj[i]

注: 在对象的方法里使用对象自己的属性时用this.属性名

预定义构造函数方式

let obj=new Object()     
//创建了一个空对象,后续需要添加属性和方法

自定义构造函数方式

创建自定义构造函数
function 类名(name.age,hobby){
    this.name=name;
    this.age=age;
    this.hobby=hobby;
}
​
注:不要在创建自定义构造函数时创建方法,否则每个对象都会创建出一个相同的方法
调用构造函数创建对象
let obj=new 类名(实参,...)

this的指向

  1. 单个元素绑定事件:this----->该元素
  2. 多个元素绑定事件:this------>当前元素
  3. 定时器:this------>window
  4. 箭头函数:this------>外部对象
  5. 函数:this------>调用函数的对象
  6. 构造函数:this------>当前正在创建的对象

继承

原型的属性和方法,子对象可以直接使用

原型对象

对象名.__proto__;
​
构造函数名.prototype;
​
//构造函数名几乎人人都有,除了Math和window