JS实现继承多态
//类对象构造模版,无new访问,类似静态访问
var Class = {
create: function () {
return function ()
{
//initialize初始化
//apply应用变更,可以反复请求
//arguments参数
this.initialize.apply(this, arguments)
};
},
//模拟抽象方法,可以随便自己定
Show: function () {
}
}; //模拟继承extobj扩展对象,srcobj源对象
var Extend = function (extobj, srcobj) {
for (var a in srcobj) {
extobj[a] = srcobj[a];
}
return extobj;
}; //动态为Object添加extend方法,用来完成继承
Object.prototype.extend = function (obj) {
return Extend.apply(this, [this, obj]);
}; //实例演示
var ClassAB = Class.create();
ClassAB.prototype = {
//初始函数,相当于构造方法
initialize: function (name) {
this.name = name;
},
Show: function (a) {
this.abstractShow(a); //抽象方法
}
}; //继承
var ClassA = Class.create();
ClassA.prototype = new ClassAB(null).extend({
Show: function (a) { //实现抽象方法
alert(this.name + " " + typeof (this) + " " + a);
} }); var ClassB = Class.create();
ClassB.prototype = new ClassAB(null).extend({
Show: function (a) { //实现抽象方法
alert(this.toString + " " + typeof (this) + " " + a+new Date().toDateString());
}
}); //多态
ClassAB = new ClassA("ClassA");
ClassAB.Show("hello"); ClassAB = new ClassB("ClassB");
ClassAB.Show("hello");
JS实现继承多态的更多相关文章
- javascript 学习笔记之面向对象编程(二):继承&多态
~~接上篇~~上一篇实现了类的实现以及类成员变量和方法的定义,下面我们来了解下面向对象中两个最重要的特性:继承和多态. 继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属 ...
- js 实现继承
我们现在要做的一件事情是像其他语言的面向对象一下实现继承多态 具体要求如下: 一个 Father 构造函数,一个 Child 构造函数,其中改写 Father中的部分参数, new Child() 表 ...
- JS高级---继承
继承 面向对象编程思想: 根据需求, 分析对象, 找到对象有什么特征和行为, 通过代码的方式来实现需求, 要想实现这个需求,就要创建对象 ,要想创建对象, 就应该显示有构造函数, 然后通过构造函数来创 ...
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- js实现继承的5种方式 (笔记)
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- js实现继承的方式总结
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- 【09-23】js原型继承学习笔记
js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...
- js实现继承的两种方式
这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---重构代码,利用继承多态 1. 主界面截图如下: 2. ...
随机推荐
- UIApplication和delegate
- ant+svn+tomcat实现项目自动部署
因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html jar包需要e ...
- Java和Tomcat类加载机制
转自:http://blog.csdn.net/codolio/article/details/5027423 加载类是运行程序的基础,了解Java和Tomcat的类加载机制对更有效地开发.调试Web ...
- jquery-data的三种用法
1.jquery-data的用处 jQuery-data主要是用来存储数据,帮助普通对象或者jQuery对象来存储数据,其实如果单纯的储存dom的单一的属性,用attr自定义属性足够了:如果存储多个键 ...
- 如何使用VIM的Help
很多时候在用到vim的命令的时候,都会去网上搜索,殊不知,如果熟练使用VIM的help,可以达到事半功倍的效果. 下面介绍如何使用VIM的help: 1. 在vim的一般模式中输入:help ...
- BA Practice Lead Handbook 1 - Why Is Business Analysis Taking The World By Storm?
The articles in this series are focused on individual Business Analysts and their managers. https:// ...
- LTTng 简介&使用实战
一.LTTng简介 LTTng: (Linux Trace Toolkit Next Generation),它是用于跟踪 Linux 内核.应用程序以及库的系统软件包.LTTng 主要由内核模块和动 ...
- [D3] 8. Margins
If you want ot add margins, should append graphics container in svg var svg = d3.select('#chartArea' ...
- LeetCode刷题笔录Add Binary
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
- maven 学习1 -安装maven 并执行编译命令
一.maven 下载与安装(安装好jdk的前提下) 1.下载地址:http://maven.apache.org/download.cgi (选择最新的zip版本),下载完毕后解压 2.安装:系统p ...