文章目录
一、原型
①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
③所有引用类型的__proto__属性指向它构造函数的prototype</font>
二、原型链
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,
则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,
如果还没有找到就会再在构造函数的prototype的__proto__中查找,
这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
①一直往上层查找,直到到null还没有找到,则返回undefined
②Object.prototype.proto === null
③所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,
指向当前这个触发事件执行的对象
实例化对象的__proto__和构造函数的prototype属性都指向与原型对象
原型对象的constructor属性指向构造函数
三、ES6之前,没有class概念,解决对象之间的属性和方法的共享问题
1.字面量方式
通过换变量名字来解决属性冲突问题
(构造函数.prototype 指向与父对象,而且子对象会继承父对象内的属性和方法 原型对象)
2.构造函数定义
通过创建一个共同的函数,分别调用来解决方法的冲突问题
3.系统默认的对象构造函数
四、ES6之后,class实现不同对象的属性和方法的共享问题
定义一个class父类方法 子类通过class 子类名 extends 父类名 { super() } 来调用他
四、算法
1.冒泡排序
相邻的两个元素进行比较,小的在前,大的在后
2.快速排序
将数组中的一个数作为基数,比基数小的放左边,大的放右边