继承:父类有的,子类也有。父类改变,子类也跟着变。
属性继承: 
    矫正this (window对象,矫正成object对象)
    fn .call(this是谁,参数1,参数2...);
    fn .apply(this是谁,[参数1,参数2...]);
    父类.apply(this,arguments);
方法继承:
    a).Worker.prototype = Person.prototype;
        问题:会触发引用 ,当改变worker的时候会改变Person的值
    b).
        for(var name in Person.prototype){
            Worker.prototype[name] = Person.prototype[name];
        }
 
        瑕疵:w1 instanceof Person         false
 
    c).
        Worker.prototype = new Person();
        瑕疵:w1.constructor 不等于Worker
 
    d).
        Worker.prototype = new Person();(原型链上赋值new Person所有的方法)
        Worker.prototype.constructor = Worker;(把它的构造函数指向worker)

面向对象写选项卡

function Tab(id){
    this.oBox = document.getElementById(id);
    this.aBtn = this.oBox.getElementsByTagName('input');
    this.aDiv = this.oBox.getElementsByTagName('div');
    this.iNow = 0;
    this.init();
}
Tab.prototype.init=function(){
    var _this = this;
    for(var i=0;i<this.aBtn.length;i++){
        this.aBtn[i].index = i;
        this.aBtn[i].onclick=function(){
            _this.iNow = this.index;
            _this.hide();
            _this.show();
        };
    }
};
Tab.prototype.hide=function(){
    for(var i=0;i<this.aBtn.length;i++){
        this.aBtn[i].className='';
        this.aDiv[i].className='';
    }
};
Tab.prototype.show=function(){
    this.aBtn[this.iNow].className='on';
    this.aDiv[this.iNow].className='on';
};
window.onload=function(){
    new Tab('div1');
}; 

面向对象写拖拽

function Drag(id){
    this.oDiv = document.getElementById(id);
    this.disX = 0;
    this.disY = 0;
    this.init();
};
Drag.prototype.init=function(){
    var _this = this;
    this.oDiv.onmousedown=function(ev){
        var oEvent = ev||event;
        _this.fnDown(oEvent);
        return false;
    };
};
Drag.prototype.fnDown=function(ev){
    var _this = this;
    this.disX = ev.clientX-this.oDiv.offsetLeft;
    this.disY = ev.clientY-this.oDiv.offsetTop;
    document.onmousemove=function(ev){
        var oEvent = ev||event;
        _this.fnMove(oEvent);
    };
    document.onmouseup=function(){
        _this.fnUp();
    };
    this.oDiv.setCapture&&this.oDiv.setCapture();
};
Drag.prototype.fnMove=function(ev){
    this.oDiv.style.left = ev.clientX-this.disX+'px';
    this.oDiv.style.top = ev.clientY-this.disY+'px';
};
Drag.prototype.fnUp=function(){
    document.onmousemove=null;
    document.onmouseup=null;
    this.oDiv.releaseCapture&&this.oDiv.releaseCapture();
};
window.onload=function(){
    new Drag('div1');
}; 
 

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

  1. JavaScript面向对象(三)——继承与闭包、JS实现继承的三种方式

      前  言 JRedu 在之前的两篇博客中,我们详细探讨了JavaScript OOP中的各种知识点(JS OOP基础与JS 中This指向详解 . 成员属性.静态属性.原型属性与JS原型链).今天 ...

  2. Javascript 面向对象编程—继承和封装

      前  言 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类) ...

  3. javascript面向对象中继承实现?

    面向对象的基本特征有:封闭.继承.多态. 在javascript中实现继承的方法: 1.原型链(prototype chaining) 2.call()/apply() 3.混合方式(prototyp ...

  4. 【前端学习】javascript面向对象编程(继承和复用)

    前言       继承,代码复用的一种模式.和其它高级程序语言相比,javascript有点点不一样,它是一门纯面向对象的语言,在JS中,没有类的概念,但也可以通过原型(prototype)来模拟对象 ...

  5. javascript 面向对象的继承的实现

    JavaScript 中的面向对象的初步认识 上面这篇简单的记录了我对 JS面向对象实现的一点初步认识和了解,下面继续研究JS面向对象,实现继承和多态. 之前的学习我了解到了 :构造函数加属性,原型p ...

  6. javascript面向对象:继承、多态

    继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属性),同时可扩展自己的成员,下面介绍几种js中实现继承的方式: 1,对象模仿:通过动态的改变 this 指针的指向,实现 ...

  7. Javascript面向对象之继承

    与类的创建篇一样,这里先贴出最终代码,再做详细分析: // 创建一个父类 function SuperType(){ this.company = 'alibaba'; } function SubT ...

  8. Javascript 面向对象之继承

    本文参考书籍<<Javascript高级程序设计>> js继承方式:实现继承,主要依靠原型链实现. 原型链:基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法. 这 ...

  9. javascript 面向对象(实现继承的几种方式)

     1.原型链继承 核心: 将父类的实例作为子类的原型 缺点:  父类新增原型方法/原型属性,子类都能访问到,父类一变其它的都变了 function Person (name) { this.name ...

随机推荐

  1. Java类的初始化过程及清理

    一.类的数据成员初始化 Java中类的数据成员初试化可能有两种形式. 在定义类成员变量的地方直接提供初始化值(这是C++中不允许的) 在构造器中初试化.(Java中不存在类似C++中的初始化列表) 两 ...

  2. [ionic开源项目教程] - 第4讲 通Service层获取数据列表

    第4讲:通Service层获取数据列表 上一讲中页面的基本架构已完成,这一讲介绍如何通过service层从服务器请求数据,在通过controller层为载体,显示到视图层. 1.在services.j ...

  3. Spring3.1新特性介绍

    Spring3.1新特性 一.Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类.   二.Spring2.5引入注解式处理器支持,通过@Controller ...

  4. BZOJ3306: 树

    3306: 树 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 311  Solved: 86[Submit][Status] Description ...

  5. 作业调度框架 Quartz.NET 2.0 StepByStep

    注:目前网上诸多介绍Quartz.net的文章,甚至Quartz.net官网上的Tutorial都是1.0版本的,而这个项目在2.0版本对项目进行了比较大规模的修改,使得原有的很多例子都不能运行,故写 ...

  6. ecshop首页调用评论及图片

    1.在library文件夹中建立一个名为index_comment.lbi文件 2.输入以下代码 <meta http-equiv="Content-Type" conten ...

  7. 【英语】Bingo口语笔记(34) - Hit系列

    hit it off 合得来 hit the bottle 喝醉酒 hit the spot 正合要求,恰到好处

  8. Heritrix源码分析(十二) Heritrix的控制中心(大脑)CrawlController(一)(转)

    本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/650694 本博客已迁移到本人独立博客: http://www.yun5u.com/ ...

  9. 用Python抓网页的注意事项

    用Python编一个抓网页的程序是非常快的,下面就是一个例子: import urllib2 html = urllib2.urlopen('http://blog.raphaelzhang.com' ...

  10. MySQL存储过程中的3种循环

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...