目录
面向对象开发
一种代码的开发方式,写代码的思想,是对面向过程的高度封装,高内聚,低耦合;
自定义构造函数
// 自己写一个构造函数
function CreateObj(name, age) {
// 1. 会自动创建一个对象
// 2. 手动向这个对象添加成员
this.name = name
this.age = age
// 3. 自动返回这个创建的对象
}
// 当一个函数和 new 关键字连用的时候,函数内的 this 指向前面的变量
// 使用对象
const o1 = new CreateObj('张三', 18)
const o2 = new CreateObj('李四', 20)
console.log(o1, o2)
// => createObj {name: '张三', age: 18} createObj {name: '李四', age: 20}
构造函数的书写
- 使用的时候需要和 new 关键字连用
- 书写构造函数首字母大写(规范)
- 构造函数的调用必须和 new 关键字连用(规范),new 的作用是自动创建对象
- 构造函数内不要写 return,写了也没用(返回基本数据类型);构造函数没用(返回复杂数据类型)
- 函数内的 this ,调用时和 new 关键字连用,所以 this 会指向自动创建出来的对象,因为自动创建出来的对象会被 return 赋值给本次调用前面的变量,this 就指向 new 前面的变量,此过程叫做实例化过程,构造出来的对象叫做实例对象,this 指向当前实例
构造函数的不合理
当把方法写在构造函数体内的时候,随着创建对象的增加,会额外造成资源浪费;
解决:
- 把属性书写在构造函数体内
- 把方法书写在构造函数的 原型 上(prototype)