1、面向过程
- 设置一个内容管理系统:考虑各个功能,然后每个功能都编写成函数,最后依次调用函数就实现了整个系统。

2、面向对象
- 设置一个内容管理系统,把系统抽象成一个个类,完成类的编写之后,系统就随之完成了(比如像Java这种纯面向对象语言开发过程就是在写类)

3、ES6的面向对象语法
顺序 | |
---|
1、创建类 | class User{} |
2、定义构造函数 | constructor() {} |
3、定义方法 | login(){} |
4、实例化对象 | new User() |
5、继承类 | class Admin extends User {} |
6、继承类属性 | super(username, password) |
<script>
class User {
constructor(username, password) {
this.username = username;
this.password = password;
}
login() {
if (this.username === "jasmine" && this.password === "123456") {
console.log("登陆成功");
} else {
console.log("登陆失败");
}
}
}
let user = new User("jasmine", "123456");
console.log(user);
user.login();
class Admin extends User {
constructor(username, password, id) {
super(username, password);
this.id = id;
}
crudUser() {
console.log("对用户进行操作");
}
}
let admin = new Admin("jasmine_qiqi", "123456789");
console.log(admin);
admin.login();
admin.crudUser();
</script>
4、ES6的面向对象总结
- 大多数前端工程师,在工作过程中,都是用面向过程的方式去解决问题。因为面向过程的代码更简洁,解决问题的方式更直接。
- 面向对象的程序设计会大幅度提升代码量,但如果我们开发的系统经常会需要变量,功能扩展,或是修复BUG,那么面向对象的程序有很大的优势。
- 也就是说,如果问题规模上升,面向对象对于系统的可扩展性和可维护性优势是非常突出的。
- 总结:面对过程(小规模),面向对象(大规模)
5、ES5的面向对象语法
ES5没有类这一特性 | 都是通过构造函数来模拟一个类 |
---|
1、创建构造函数,相当于类 | function User() {} |
2、定义属性 | this.username = username |
3、定义方法 | this.login = function () {} |
4、创建实例 | new User() |
5、继承(函数) | Admin.prototype = new User() |
5、继承 (对象) | Admin.__proto__ = new User() |
<script>
function User(username, password) {
this.username = username;
this.password = password;
this.login = function () {
if (this.username === "jasmine" && this.password === "123456") {
console.log("登陆成功");
} else {
console.log("登陆失败");
}
}
}
var user = new User("jasmine", "123456");
console.log(user);
user.login();
function Admin(username, password) {
this.username = username;
this.password = password;
}
Admin.prototype = new User();
var admin = new Admin("jasmine", "123456");
console.log(admin);
admin.login();
</script>