js模拟实现继承功能

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
<script type="text/javascript">
    //js中模拟继承效果的案例
    //函数对象中的三种“继承” 方式 汇总

    //方式一
//*******************************************************************************************************************
/*    function A() {
    }
    A.prototype = {
        aname:"123",
        method1:function() {
           alert("对象A的原型");
        }
    }
    function B() {
//        this.name="bbb",
//
//        this.method2=function() {
//            alert("对象B的原型");
//        }
    }
    B.prototype = {
        bname:"bbb",
            method2:function() {
        alert("对象B的原型");
    }
    }

    var a = new A();

    B.prototype = a;
    var b = new B();*/

//    b.method2();  //会被a中的原型覆盖 b中的原型,除非逐个添加原型的方式
//    b.method

//    alert(b.bname);

//*********************************************************************************************************************
    //方式二+方式三 解决覆盖问题
    function A(){}
    A.prototype = {
        aname:"aaa",
        method1:function() {
            alert("A的原型对象");
        }
    }
    function B(){}
    //B的原型属性指向A的原型属性
    B.prototype = A.prototype;

    //利用原型分散的添加方式给函数对象B添加属性和方法
    B.prototype.bname = "bbb";
    B.prototype.method2 = function(){
        alert("B的原型对象");
    }

    //分别创建A和B函数对象的小对象
     var  a  = new A();
     var  b = new B();
    a.method2();  //说明a可以访问B的内容
    b.method1();  //说明b也可以访问A的内容

    //因为A的原型指向的新的内存地址,和B原型也指向这个内存地址
    //且后来往原型中添加的属性和方法也是在这个内存地址,共用了一个内存地址:深复制
    //所以模拟实现了继承的功能,但并不是真正的继承

</script>
</head>

<body>

</body>
</html>
时间: 2024-10-08 13:25:02

js模拟实现继承功能的相关文章

JS模拟类继承

//最后一个参数是JSON表示的类定义 //如果参数大于一,则第一个参数是基类,否则,基类是object //中间的参数是类实现的接口 //返回值是类,类是一个构造函数,并继承了基类的prototype function Class(){ aDefine = arguments[arguments.length - 1]; //传入的最后一个参数是要定义的类 if(!aDefine) return; //如果没用传参数,则直接结束. var aBase = arguments.length>1?

js模拟类的创建以及继承

<html> <body> <script>    //js模拟类的创建以及继承        //第一步:创建父类        function Parent(name){            this.name = name;        }        //给父类添加属性方法        Parent.prototype.age = 18;        //var p1 = new Parent();    //第二步:创建子类            

单篇文章JS模拟分页

废话部分 前两天做了一个前台分页插件,支持ajax读取数据绑定前台 和 url带页码参数跳转两种方式.于是稍加改动,做了一个单篇文章js模拟分页的代码,为什么说是模拟分页呢?因为在服务器响应HTML请求的时候,就已经把全文回传给客户端了,只是我们通过js的方式,把全文隐藏,每次翻页至显示出我们需要的那一部分,而不是真正的按需要去发出HTML请求.所以,在做这个插件的时候去掉了ajax请求的功能及其附带参数,去掉了pageSize参数(恒等于1).这里就不讨论具体的技术细节了和上一篇的分页计算原理

由chrome剪贴板问题研究到了js模拟鼠标键盘事件

写在前面 最近公司在搞浏览器兼容的事情,所有浏览器兼容的问题不得不一个人包了.下面来说一下今天遇到的一个问题吧 大家都知道IE下面如果要获得剪贴板里面的信息的话,代码应该如下所示 window.clipboardData.getData("Text") 可是在chrome下面就行不通了,chrome下面没有类似ie的这种方法,那应该怎么办呢,百度了一下,发现还真有办法. 只要在HTML界面上放上一个text类型的控件,如下所示 <textarea id="textAre

js对象的继承

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> //继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) //属性的继承 : 调用父类的构造函数 call //

纯js模拟 radio和checkbox控件

代码待优化,功能实现了,不兼容ie8以上, 相同name的radio可以实现切换的操作, 分享代码,共同学习进步 <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style> .radiobox, .checkbox { width: 10px; height: 10px; padding: 2px; borde

JS~模拟表单在新窗口打开,避免广告拦截

说起广告拦截,这应该是浏览器的一个特性,它会将window.open产生的窗口默认为一个广告,将它进行拦截,但有时,这不是我们所希望的,有时,我们就是需要它在客户端的浏览器上弹出一个新窗口,以展示数据处理的更新结果,例如,一个创建商品的预览功能,它需要先保存数据,然后再在新窗口展示最新的信息,这种需求并不少,而大多数人的作法就是使用window.open去弹窗口,但它确实不是一种好的方式! 新方式来了 我们知道表单提交实际上可以把POST的结果响应到新窗口上,我们就是利用表单的这种性质,在JS中

7、JS面向对象编程之继承

Javascript本身是从Perl语言的语法演变而来的,本质上是脚本语言,随着版本的更新逐渐加入的对面向对象的模拟.我认为Js的面向对象模拟总体上做得还是不错的,因为我们不能盲从任何一种理念,不能纯粹的为了OOP而OOP,我们需要抓住的是面向对象的好处到底是什么?为了这些优点去OOP,才是最明智的选择,所以说Js做得还不错. Js的继承在很多书里面细致的分了很多种类型和实现方式,大体上就是两种:对象冒充.原型方式.这两种方式各有优点和缺陷,这里我先列举出来,再从底层分析区别: (一)对象冒充

前端怎么用js模拟应用 JSON-通俗易懂

前端怎么用js模拟应用 JSON-通俗易懂,这是转载额 好多孩子 弄不明白复杂的json 格式的应用,下面从基础来看一看JSON,怎么玩, 其实结构理解清了,写起来比html还爽吧! 0.前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的