这篇文章主要介绍了 JS 继承用法, 实例分析了拷贝继承、类继承及原型继承等的使用技巧, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例分析了 JS 继承的用法。分享给大家供大家参考。具体分析如下:
继承 : 子类不影响父类,子类可以继承父类的一些功能 (代码复用)
属性的继承 : 调用父类的构造函数 call
方法的继承 : for in : 拷贝继承 (jquery 也是采用拷贝继承 extend)
1. 拷贝继承
- function Person (name){
- this.name = name;
- }
- Person.prototype.showName =function (){
- alert(this.name);
- }
- function Worker(name,job){
- Person.call(this,name);
- this.job = job;
- }
- extend(Worker.prototype, Person.prototype);
- //如果用Worker.prototype=Person.prototype的话,会造成引用相同的问题
- function extend(obj1,obj2){
- for(var i in obj2){
- obj1[i] = obj2[i]
- }
- }
- var coder = new Worker('magicfly','frontEnd');
- coder.showName();
2. 类继承
- function Person (name){
- this.name = name;
- }
- Person.prototype.showName =function (){
- alert(this.name);
- }
- function Worker(name,job){
- Person.call(this,name);
- this.job = job;
- }
- //Worker.prototype = new Person();
- // 这样继承会继承父级的不必要属性
- function F(){};
- F.prototype = Person.prototype;
- Worker.prototype = new F();
- //通过建立一个临时构造函数来解决 ,也称为代理函数
- var coder = new Worker('MAGICFLY','START');
- coder.showName();
3. 原型继承
- var a = {
- name : '小明'
- };
- var b = cloneObj(a);
- b.name = '小强';
- //alert( b.name );
- alert( a.name );
- function cloneObj(obj){
- var F = function(){};
- F.prototype = obj;
- return new F();
- }
适用情况
拷贝继承: 通用型的 有 new 或无 new 的时候都可以
类式继承: new 构造函数
原型继承: 无 new 的对象
希望本文所述对大家的 javascript 程序设计有所帮助。
来源: