# OOP ?
## 封装: 低耦合 and 高内聚
## 多态:重载 and 重写
/*
* 封装: 低耦合高内聚
* 多态: 重载和重写
* 重载: 方法名相同,形参个数或者类型不一样(JS中不存在真正意义上的重载)
* (JS中重载指的是同一方法,根据传参不同,实现出不同的效果)
* 重写:在类的继承中,子类可以重写父类中的方法
*
* 什么是面向对象?
* 面向对象是一种编程思想,JS本身就是基于面向对象构建出来的
* (例如:
* JS中有很多内置类,像Promise就是ES6中新增的一个内置类,
* 我们可以基于new Promise来创建一个实例,来管理异步编程)
*
* VUE/REACT/JQUERY也是基于面向对象构建出来的。
* 他们都是类,平时开发的时候,我们都是创建他们的实例来操作的
*
* 但是,JS中的面向对象和其他编程语言略微不同,
* JS中类和实例是基于原型和原型链机制来处理的;
* (重写、重载、继承也不太一样)
*/
function sum(x,y,z) {
//or 使用 arguments
if(typeof z === 'undefined') {
//...
return ;
}
//...
}
sum(1,2);
sum(1,2,3);
# 继承
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
/*
* 继承:子类继承父类中的属性和方法
*/
function A(x) {
this.x=x ;
}
A.prototype.getX=function() {
console.log(this.x);
}
function B(y){
this.y=y ;
}
B.prototype.getY = function() {
console.log(this.y);
}
let b1 = new B(100);
b1.y;
</script>
</body>
</html>