《JavaScript 高级程序设计》 继承有关的总结
来源:互联网 发布:php微信分享接口开发 编辑:程序博客网 时间:2024/06/05 07:00
1. 原型链方式实现继承。
sub.prototype = new superType();
重写原型对象,用一个新的实例来代替默认提供的原型。
不能使用字面量方式写原型对象,相当于重写了原型链。
方法:1) instanceof 测试原型链中出现过的构造函数;2).isPrototypeOf() 链中出现过的原型,都是派生实例的原型
2. 派生对象添加方法会屏蔽原型链中之前存在的方法。
3.原型链的问题:1)在构造函数中已经出现过的问题,原型中的属性会被所有实例共享。2)不能向派生类型中传递参数(会影响所有对象实例)
其他的方法:
- 借用构造函数
function Sub(){ SuperType.call(this,"nicholas");//借调了父类的构造函数 /*...其他属性、方法*/}function SuperType(name){ this.name = name;}- 每一次创建Sub,都会创建Sub中方法的新实例,这是没必要的,考虑函数复用的话,采用组合继承。
在父类的原型对象中添加方法,实现函数复用。
SuperType.prototype.getMessage=function(){ alert("lyx");};function Sub(name,age){ SuperType.call(this,name);//继承属性 this.age=age;}Sub.prototype = new SuperType();//继承方法Sub.prototype.constructor = Sub;//手动设置新的prototype的构造器属性
第一次调用SuperType构造函数,Sub的原型会添加两个属性;
第二次调用SuperType构造函数时,是在调用Sub构造函数时,这时候实例添加了两个属性,覆盖了原型中的。
- 原型式继承
以另一个对象实例为基础
var super={ name:"chloe3", age:"19"};function obect(super){ function F(){}; F.prototype = super;//以此方式创建的新对象都以super为原型,共享了它的引用类型值的属性(因为是引用的浅复制) return new F();}ES5的方法:Object.creat(srcobj,{字面量形式——属性集合对象})
- 寄生式继承
创建一个封装了继承过程的函数。先采取某种方法继承某个实例,再对它增加特有的属性和方法,最后返回。
function createOBJ(name,age){ var tmp = object(person); tmp.name = name; tmp.age = age; return tmp;}特点:主要考虑对象,不考虑新建类型和构造函数。做不到函数复用。
- 寄生组合式继承
function inheritPrototype(subType,superType){ var prototype = object(superType); prototype.constructor = subType; subType.prototype = prototype; }
阅读全文
0 0
- 《JavaScript 高级程序设计》 继承有关的总结
- 《JavaScript高级程序设计》--继承
- 【JavaScript高级程序设计】对象的创建与继承
- JavaScript高级程序设计一书中对组合继承的理解
- javascript高级程序设计总结之一
- javaScript高级程序设计阅读总结
- 《JavaScript高级程序设计》总结一
- 《JavaScript高级程序设计》总结二
- 《JavaScript高级程序设计》总结四
- 《 JavaScript高级程序设计》第四章 继承
- 《JavaScript高级程序设计》学习笔记(继承)
- javascript高级程序设计学习(四)----------继承
- JavaScript高级程序设计 (6章 继承)---读书笔记
- JavaScript高级程序设计【面向对象-继承】
- Javascript高级程序设计读书笔记——继承
- javascript高级程序设计笔记4-继承
- javascript创建对象总结(javascript高级程序设计)
- JavaScript高级程序设计之面向对象的程序设计之继承之组合继承第6.3.3讲笔记
- 回文质数
- hello,word 这是我开通博客的第一天
- 对拍教程-By skyler2003
- foreach的内部实现和泛型代码
- React项目的打包与部署到腾讯云
- 《JavaScript 高级程序设计》 继承有关的总结
- 如何理解inode
- 第二次实验
- 学习反思
- 两个Form之间用构造函数回传数值【两个Form窗体不关闭情况下】
- Mysql日志解析
- Python 3)面向对象的基本概念(理解)
- opencv stitch拼接
- 第八天总结 韦荣益