js实现面向对象的继承和重载
来源:互联网 发布:数据库大数据量处理 编辑:程序博客网 时间:2024/04/29 01:25
继承
简述
继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
实现代码
// 父类var Point = { // 创建一个生产函数 createNew: function() { // 声明对象 var point = {}; // 给对象添加属性 point.x = 1; point.y = 2; return point; }};// 子类var SubPoint = { createNew: function() { var point = {}; // 调用父函数的生产函数 point = Point.createNew(); // 为生成的对象添加属性 point.type = 3; return point; }};
测试
代码
var a = SubPoint.createNew();console.log(a.x);console.log(a.y);console.log(a.type);
运行结果
结果分析
能够打印出x和y属性,说明实现了继承。
重载
简述
重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
实现代码
// 方法一:通过参数的个数来确定执行的代码createNew: function() { // 获取参数个数 var len = arguments.length; var point = {}; switch(len) { case 0: point = Point.createNew(); point.type = 0; break; case 3: point = Point.createNew(arguments[0], arguments[1]); point.type = arguments[2]; break; } return point;}// 方法二:根据参数类型判断执行的代码createNew: function() { var point = {}; if(typeof(arguments[1]) == "number") { // 这里接收的第一个参数为number类型,的调用情况 point = Point.createNew(arguments[0], arguments[1]); point.type = null; } else { // 其他情况执行以下代码 point = Point.createNew(arguments[0].x, arguments[0].y); point.type = arguments[1]; } return point;}
测试
测试代码
var Point = { createNew: function() { var len = arguments.length; var point = {}; switch(len) { case 0: point.x = 0; point.y = 0; break; case 2: point.x = arguments[0]; point.y = arguments[1]; break; } return point; }};var APoint = { createNew: function() { var len = arguments.length; var point = {}; switch(len) { case 0: point = Point.createNew(); break; case 2: point = Point.createNew(arguments[0], arguments[1]); break; } return point; }};var BPoint = { createNew: function() { var point = {}; if(typeof(arguments[1]) == "number") { point = Point.createNew(arguments[0], arguments[1]); point.type = 2; } else { point = Point.createNew(arguments[0], arguments[1]); point.type = 3; } return point; }};// 调用APoint中参数长度为0时执行的代码var a1 = APoint.createNew();console.log("a1的x、y值分别为:" + a1.x + "," + a1.y);// 调用APoint中参数长度为2时执行的代码var a2 = APoint.createNew(1, 2);console.log("a2的x、y值分别为:" + a2.x + "," + a2.y);// 调用BPoint中第一个参数类型为number时执行的代码var b1 = BPoint.createNew(1, 2);console.log("b1的x、y、type值分别为:" + b1.x + "," + b1.y + "," + b1.type);// 调用BPoint中第一个参数类型不为number时执行的代码var b2 = BPoint.createNew("1", "2");console.log("b2的x、y、type值分别为:" + b2.x + "," + b2.y + "," + b2.type);
测试结果
阅读全文
0 0
- js实现面向对象的继承和重载
- java面向对象的继承以及方法重写和重载
- js面向对象和继承
- SAPUI5 - JS面向对象继承方式的实现
- js 面向对象 和方法重载
- java面向对象一:实现继承、重载、重写
- js面向对象原型和继承
- js 面向对象 继承
- JS面向对象-继承
- js面向对象继承
- js面向对象,继承
- js面向对象继承
- JS面向对象---继承
- js面向对象 继承
- java--面向对象之继承4(重写和重载)
- js 学习面向对象的继承
- js面向对象编程的继承问题
- js--面向对象--构造函数的继承
- 树的子结构
- 互联网巨头
- eclipse build path功能总结
- 工厂模式
- 找到正确的方式才是提升效率的最佳方式
- js实现面向对象的继承和重载
- java的集合list map
- PHP 环境下 发送邮件的问题:方法一:使用phpmailer
- XML
- AlphaGo不是围棋九段高手,而是谷歌的科技作秀
- Centos 7 安装 Redis
- 双向循环链表实践
- Android卫星菜单
- Android 照片墙功能实现