js中的继承总结全( 含new 原理过程 )
1. 借用 new 构造函数继承
原理: 利用 new 的原理, 通过apply,call , bind 改变 this , 只能实现部分方法的继承:
MDN对new的描述: new
运算符创建一个用户自定义的对象类型的实例或具有构造函数的内置对象的实例
new的原理过程: var fn = new Foo()
1.1 创建空函数 fn(){} , 此时: fn.__proto__ === Funciton.prototype ,, fn.construtor === Function
1.2 设置新函数的constructor属 性为构造函数的名称,设置新对象的proto属性指向构造函数的prototype对象;
fn.__proto__ = Foo.prototype;
扩展了新对象的原型链
1.3 使用新对象调用函数,函数中的this被指向新实例对象:
ClassA.call(obj); //{}.构造函数();
1.4.返回this指针。当存在显示的返回时,返回return后面的内容。新建的空对象作废。
function test() {
this.name = "test";
}
test.prototype = {
a:{},
b:{}
}
var c = new test();
缺点: 不能继承构造函数prototype原型上的方法, 只能部分继承
2. 借用原型链__proto__找构造函数prototype原型继承
原理: 利用对象的__proto__向上, 找到构造函数的prototype原型
缺点:
3. 组合继承( 结合构造和原型 )
3.1
3.2
3.3 最完美继承
缺点:
4. ES6的class实现的继承
优点:
最新文章
- Microservice Anti-patterns
- 【javascript基础】7、继承
- python some install tips
- 7.29 H5学习笔记
- js中的单体对象
- N个数的排列算法
- Log4net源码View之Logger解析
- 新浪微博模拟登陆+数据抓取(java实现)
- LinearRegression
- nodejs搭配phantomjs highcharts后台生成图表
- 通过SecureCRT和PuTTY连接臻云CentOS版云主机
- CentOS 网络设置修改
- android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
- chapter11_3 字符串缓冲
- [转载]前端构建工具gulpjs的使用介绍及技巧
- [验证码识别技术]字符验证码杀手--CNN
- hihocoder 1035 : 自驾旅行 III
- poj 2104 主席树(区间第k大)
- mysql中有多种存储引擎,每种引擎都有自己的特色
- js格式化数字
热门文章
- 在Linux下如何使用openssl生成RSA公钥和私钥对
- Xamarin Forms error MSB6006: “java.exe”已退出,代码为 2 解决办法
- c++ 程序崩溃生成Dump文件
- JS中的闭包(转自他处)
- python小程序--Three(三级菜单)
- extjs +String2 +Spring 下的分页 以及返回json格式错误的问题
- postman+newman+jenkins 接口自动化问题
- CCF CSP 201812-1 小明上学
- vue-cli —— 局部修改Element样式
- angular2 ----字符串、对象、base64 之间的转换