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. widget intent重复问题

    今天在做android widget时发现点击任意widget时只会更新最后一个widget 原来是requestCode的问题 Intent intent = new Intent(WidgetPr ...

  2. cnzz广告管家使用心得

    步着谷歌广告管家的后尘,国内百度公司和知名网络流量数据统计公司cnzz也分别推出了百度广告管家和cnzz广告管家.笔者分别注册了这两个网站.通过一段时间的使用,写下此文,希望对各位站长朋友们有所帮助. ...

  3. HDU 1348 Wall

    题解:计算凸包周长 #include <iostream> #include <cmath> #include <algorithm> const int size ...

  4. JAVA 创建TXT文件,写入文件内容,读取文件内容

    [java]  view plain copy   package com.abin.facade.ws.mail.function; import java.io.BufferedReader; i ...

  5. linux使用技巧(shell/vi/screen)

    1,Shell bash > awk '{print {NF}}' file 此时想修改操作命令可参照下面快捷方式 ctrl a 光标移动到命令最前面 ctrl e 光标移动到命令最后面 ctr ...

  6. N bulbs(规律)

    N bulbs  Accepts: 408  Submissions: 1224  Time Limit: 10000/5000 MS (Java/Others)  Memory Limit: 655 ...

  7. How to setup linked servers for SQL Server and Oracle 64 bit client

    感谢作者:Tim Ford. 图文并茂. 原帖地址: http://www.mssqltips.com/sqlservertip/1433/how-to-setup-linked-servers-fo ...

  8. Foundation Sorting: Quicksort

    /* Quick Sorting. * Implementation history:. * 2013-09-15, Mars Fu, first version. */ /* [Quicksort ...

  9. MessageDigest简单介绍

    本文博客原文 參考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html 一.概述 java.security.MessageDigest类用于 ...

  10. js 获取星期

    var week;            if (new Date().getDay() == 0) week = "星期日";            if (new Date() ...