# 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>