---恢复内容开始---
一、面向对象:通过函数封装得到一个类
备注:类的本质还是属性
每个对象上天生有一个__proto__,指向类的原型。
Prototype和__proto__
Zhangsan.name
Zhangsan这个对象首先看name是私有的,是就直接使用,不是就通过__proto__往他的类的prototype上查找,有就直接使用,没有就继续向上查找,直到查找到基类Object,没有就是undefined,有就直接使用。这种查找机制叫原型链。
二、函数的特殊
三、继承js
2.Call继承 call方法是函数/类天生自带的一个方法。将父类私有的继承为子类私有的
类 私有的 公有的
Fn.call(obj,跟fn的参数匹配);拿obj取代fn中的this然后调用fn
3.冒充对象继承 将父类私有的和公有的都继承为子类私有的。使用for in
可以遍历对象的公有属性 fn 就是公有的
冒充对象的案例
4.混合继承 私有的继承为私有的 私有的和公有的再次继承为公有的。
Call 继承和原型继承的结合
5.组合继承 私有继承为有 公有继承为公有‘
私有继承为私有 借助call 公有继承为公有 不能是原型赋值给原型(地址赋值)因为原型是对象,是复合数据类型,是地址赋值给了前者,导致二者指向同一个原型。得克隆。
Js的克隆如何实现 var obj2=Object.create(obj1)
6.中间类继承
1、封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承
提高代码复用性;继承是多态的前提。
3、多态
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
---恢复内容结束---
原文:https://www.cnblogs.com/Blogboke/p/1452339342_.html