Js继承二

<html>
<head>
    <title></title>
    <style>
        #div1{
            width:200px;
            height:200px;
            background:yellow;
            position:absolute;
        }
          #div2{
            width:200px;
            height:200px;
            background:green;
            position:absolute;
        }
    </style>
    <script>
        window.onload = function () {
            new Drag(‘div1‘);
            new LimitDrag(‘div2‘);

        }

        function Drag(id) {
            var _this = this;
            this.disX = 0;
            this.disY = 0;
            this.oDiv = document.getElementById(id);
            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();
                 }

                 //return false;//阻止默认事件

        }

        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.onmousemove = null;
            document.onmouseup = null;
        }

        function LimitDrag(id) {
            Drag.call(this, id);//继承的属性
        }
        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;
            }
            if (t < 0) {
                t = 0;
            }
            if (l > document.documentElement.clientWidth - this.oDiv.offsetWidth) {
                l = document.documentElement.clientWidth - this.oDiv.offsetWidth;
            }
            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‘;

        }
    </script>
</head>
<body>
    <div id="div1">普通的</div>
    <div id="div2">限制范围的</div>
</body>
</html>
时间: 2024-10-11 16:11:59

Js继承二的相关文章

js继承的常用方式

写在前面的话:这篇博客不适合对面向对象一无所知的人,如果你连_proto_.prototype...都不是很了解的话,建议还是先去了解一下JavaScript面向对象的基础知识,毕竟胖子不是一口吃成的. 我们都知道面向对象语言的三大特征:继承.封装.多态,但JavaScript不是真正的面向对象,它只是基于面向对象,所以会有自己独特的地方.这里就说说JavaScript的继承是如何实现的. 学习过Java和c++的都知道,它们的继承通过类实现,但JavaScript没有类这个概念,那它通过什么机

JS的二维数组

今天,记录一下JS的二位数组,并附上例题. 一.二维数组的本质:数组中的元素又是数组. 其实,我们都见过这样的二维数组,只不过没在意罢了,例如: var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //这就是一个二位数组arr[2][3]; // 11 注意:表示第三列第4行所在的元素.角标从0开始 二.下面介绍二维数组的初始化 记住了二维数组的本质,初始化也难不倒我们了.看一下实例 实例一: var arr = [[1,2],[a,

JS学习二

函数作用域和声明提前 var scope = 'global'; function f() { console.info(scope);   //输出undefined var scope = 'local'; console.info(scope);  //输出 local } 上述代码等价于 function f() { var scope; console.info(scope); scope = 'local'; console.info(scope); } 将函数内的变量声明"提前&q

JS继承的实现方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原型方法 Animal

js继承的实现

js继承有5种实现方式: 1.继承第一种方式:对象冒充   function Parent(username){     this.username = username;     this.hello = function(){       alert(this.username);     }   }   function Child(username,password){     //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承     //第一步:this.

js继承有5种实现方式

js继承有5种实现方式:1.继承第一种方式:对象冒充  function Parent(username){    this.username = username;    this.hello = function(){      alert(this.username);    }  }  function Child(username,password){    //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承    //第一步:this.method是作为一

mongo shell启动配置文件.mongorc.js(二)

mongo shell启动配置文件.mongorc.js(二) 如果你的主目录下有个.mongorc.js文件,那么当你启动shell时他就会自动运行.使用它可以初始化任何你经常使用的helper方法和你不想意外操作的删除方法. 比如,你不想使用默认的dropDatabase()方法了,你可以在.mongorc.js文件中添加下面的命令: DB.prototype.dropDatabase = function() {        print("No dropping DBs!");

玩转Node.js(二)

玩转Node.js(二) 先来回顾上次的内容,上一次我们使用介绍了Node.js并写了第一个服务器端的Hello World程序,在这个Hello World程序中,请求自带的http模块并将其赋给http变量,然后调用http模块的createServer函数,这个函数会返回一个对象,这个对象有一个叫做listen的方法,而这个方法有一个数值参数,指定这个HTTP服务器监听的端口号,我们当时定义的是8888端口号.那么为什么看起来有些复杂呢?那是因为我们向createServer函数传递了一个

JS继承——原型的应用

前面我们知道JS是基于对象编程的一种脚本语言,在JS本着一切皆对象的原则,对象之间也涉及到了继承,不过这里的继承与我们以往学习过的继承有所不同,它运用的是对象的原型,来构造一个原型链来实现对超类对象的继承. 1.如何实现对象继承 function Box() { //Box 构造<span style="font-family:Arial;font-size:18px;">,超类对象</span> this.name = 'Lee'; } Desk.protot