javascript和其他语言相比,它没有真正意义上的继承,也不能从一个父类extends,要实现它的继承可以通过其他方式来实现:

步骤:1.继承父类的属性 2.继承父类的原型

下面就以一个拖拽为例子:

 //Drag.js
 function Drag(id){
     var _this=this;
     this.oDiv=document.getElementById(id);
     this.disX=0;
     this.disY=0;

     this.oDiv.onmousedown=function(ev){
         _this.fnDown(ev);
         return false;
     };
 }

 Drag.prototype.fnDown=function(ev){
     var _this=this;
     var oEvent=ev||event;
     this.disX=oEvent.clientX-this.oDiv.offsetLeft;
     this.disY=oEvent.clientY-this.oDiv.offsetTop;

     document.onmousemove=function(ev){
         _this.fnMove(ev);
     };
     document.onmouseup=function(){
         _this.fnUp();
     };
 };

 Drag.prototype.fnMove=function(ev){
     var oEvent=ev||event;
     this.oDiv.style.left=oEvent.clientX-this.disX+'px';
     this.oDiv.style.top=oEvent.clientY-this.disY+'px';
 };

 Drag.prototype.fnUp=function(){
     document.onmouseup=null;
     document.onmousemove=null;
 };

下面就是子类继承父类,不需要些多余的代码就可以实现拖拽功能:

 //LimitDrag.js
 function LimitDrag(id){
     //1.继承属性    通过call改变当前this指向,实现了给LimitDrag new出来的对象赋值
     Drag.call(this, id);
 }

 //2.继承原型(object是引用类型)
 //若通过直接赋值子类会影响到父类的原型    LimitDrag.prototype=Drag.prototype;    X
 for(var i in Drag.prototype){
     LimitDrag.prototype[i]=Drag.prototype[i];
 }

 //这里就实现了子类继承父类,没有写多余的代码就可以拖拽了
 //===================================================================

 //这里实现子类自己的方法,也不会影响父类
 //限制拖拽范围
 LimitDrag.prototype.fnMove=function (ev)
 {
     var oEvent=ev||event;
     var l=oEvent.clientX-this.disX;
     var t=oEvent.clientY-this.disY;

     if(l<0){
         l=0;
     }else if(l>document.documentElement.clientWidth-this.oDiv.offsetWidth){
         l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
     }

     if(t<0){
         t=0;
     }else if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight){
         t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
     }

     this.oDiv.style.left=l+'px';
     this.oDiv.style.top=t+'px';
 };

javascript面向对象——继承的更多相关文章

  1. javaScript面向对象继承方法经典实现

    转自原文javaScript面向对象继承方法经典实现 JavaScript的出现已经将近20多年了,但是对这个预言的褒贬还是众说纷纭.很多人都说JavaScript不能算是面向对象的变成语言.但是Ja ...

  2. JavaScript面向对象—继承的实现

    JavaScript面向对象-继承的实现 前言 面向对象的三大特性:封装.继承和多态.上一篇我们简单的了解了封装的过程,也就是把对象的属性和方法封装到一个函数中,这一篇讲一下JavaScript中继承 ...

  3. JavaScript面向对象继承方法

    JavaScript的出现已经将近20多年了,但是对这个预言的褒贬还是众说纷纭.很多人都说JavaScript不能算是面向对象的变成语言.但是JavaScript的类型非常松散,也没有编译器.这样一来 ...

  4. JavaScript 面向对象继承详解

    题记 由于js不像java那样是完全面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,一般都是基于原型链的方式: 一.继承初探 大多数JavaScript的实现用 __proto_ ...

  5. Javascript 面向对象-继承

    JavaScript虽然不是面向对象的语言,但是我们通过构造可以让其支持面向对象,从而实现继承.重写等面向对象的特性.具体代码如下: //创建类Person function Person(age,n ...

  6. JavaScript面向对象--继承 (超简单易懂,小白专属)

    一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之间的"复制粘贴" 第一条路是通过构造函数来继 ...

  7. JavaScript 面向对象继承的实现

    <script type="text/javascript"> function Animal () { this.species="Animal" ...

  8. javascript面向对象继承和原型

    一.理解什么是对象:任何东西都可以是对象,对象就是一组无序属性的集合 对象具有属性和方法1.1 属性的类型属性内部又定义了两种属性:数据属性和访问器属性 (1)数据属性:有4个描述的行为 Config ...

  9. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

随机推荐

  1. ssma for oracle

    SQL Server Migration Assistant (SSMA) for Oracle lets you quickly convert Oracle database schemas to ...

  2. [LeetCode]题解(python):099-Recover Binary Search Tree

    题目来源: https://leetcode.com/problems/recover-binary-search-tree/ 题意分析: 二叉搜索树中有两个点错了位置,恢复这棵树. 题目思路: 如果 ...

  3. selenium 学习笔记 ---新手学习记录(5) 问题总结(java)

    1.今天遇到个奇葩问题,iframe有两个id相同的(如下图) 使用driver.switchTo().frame(“frmLinkPage1”);这个无法使用了. 后来改用driver.switch ...

  4. 【转】vs2008中leptonica-1.68安装配置

    tesseract ocr挺不好配置的,找到一篇不错的文章,分享如下:http://hi.baidu.com/ever8936/blog/item/6998e1196b1d0161dab4bd8f.h ...

  5. LintCode-三数之和 II

    题目描述: 给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和. 注意事项 只需要返回三元组之和,无需返回三元组本身 样例 例如S = .  和最接近1的三元组 ...

  6. Access2007中如何运行SQL执行SQl语句

    1. 在“创建”选项卡中,单击“其他”组中的“查询设计”. 2. 单击“显示表”对话框中的“关闭”,而不添加任何表或查询. 3. 在“设计”选项卡中,单击“查询类型”工作组中的“联合”. 4. 单击“ ...

  7. Failure [INSTALL_FAILED_OLDER_SDK]

    在AndroidManifest.xml 中把  <uses-sdk android:minSdkVersion="21" />的版本调节的低一点

  8. Mac OS使用技巧之十五:快捷方便的Mini Dock

    Mini Dock是前面忘记了提,这里做一些补充.       Mini Dock是Mac OSX的一个值得大书特书的亮点.尽管windows下也有类似的东西,但Mac下却提供了更为全面的功能.通过M ...

  9. 【JAVA】修改项目包名

    从最后一层开始修改,一步步往上递增修改.

  10. 【转】windows上自动设置java环境变量的脚本

    转载:http://www.cnblogs.com/flowwind/p/4066146.html 近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要 设置java环境变量,ja ...