zoukankan      html  css  js  c++  java
  • 面向对象---高级

    1.Json方式的面向对象---通过在Json里面写函数来调用这个函数。

    1 var obj={a: 12, b: 5, c: function (){
    2     alert(this.a);
    3 }};
    4 
    5 obj.c();

    Json的缺陷----对象只能是自己一个一个的添加,在大型项目并不适用。

     1 var p1={
     2     name: 'paxster',
     3     sex: '男',
     4     showName: function ()
     5     {
     6         alert('我的名字是:'+this.name);
     7     },
     8     showSex: function ()
     9     {
    10         alert('我的性别是'+this.sex+'的');
    11     }
    12 };
    13 
    14 var p2={
    15     name: 'boychik',
    16     sex: '女',
    17     showName: function ()
    18     {
    19         alert('我的名字是:'+this.name);
    20     },
    21     showSex: function ()
    22     {
    23         alert('我的性别是'+this.sex+'的');
    24     }
    25 };
    26 p1.showName();
    27 p1.showSex();
    28 p2.showName();
    29 p2.showSex();

    命名空间-----方便函数管理,分工明确

     1 var paxster={};//一个空的json
     2 paxster.common={
     3     getByClass: function ()
     4     {
     5     },
     6     myAddEvent: function ()
     7     {
     8     }
     9 };
    10 
    11 paxster.fx={
    12     startMove: function ()
    13     {
    14     },
    15     drag: function ()
    16     {
    17     }
    18 };
    19 
    20 paxster.common.getByClass()

    面向对象写法---拖拽

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <style>
     5 #div1 {width:100px; height:100px; background:red; position:absolute;}
     6 #div2 {width:100px; height:100px; background:yellow; position:absolute;}
     7 </style>
     8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     9 <title>无标题文档</title>
    10 <script>
    11 window.onload=function ()
    12 {
    13     new Drag('div1');
    14     new Drag('div2');
    15 };
    16 
    17 function Drag(id)
    18 {
    19     var _this=this;
    20     
    21     this.disX=0;
    22     this.disY=0;
    23     this.oDiv=document.getElementById(id);
    24     
    25     this.oDiv.onmousedown=function ()
    26     {
    27         _this.fnDown();
    28     };
    29 }
    30 
    31 Drag.prototype.fnDown=function (ev)
    32 {
    33     var _this=this;
    34     var oEvent=ev||event;
    35     this.disX=oEvent.clientX-this.oDiv.offsetLeft;
    36     this.disY=oEvent.clientY-this.oDiv.offsetTop;
    37     
    38     document.onmousemove=function ()
    39     {
    40         _this.fnMove();
    41     };
    42     
    43     document.onmouseup=function ()
    44     {
    45         _this.fnUp();
    46     };
    47 };
    48 
    49 Drag.prototype.fnMove=function (ev)
    50 {
    51     var oEvent=ev||event;
    52     
    53     this.oDiv.style.left=oEvent.clientX-this.disX+'px';
    54     this.oDiv.style.top=oEvent.clientY-this.disY+'px';
    55 };
    56 
    57 Drag.prototype.fnUp=function ()
    58 {
    59     document.onmousemove=null;
    60     document.onmouseup=null;
    61 };
    62 </script>
    63 </head>
    64 
    65 <body>
    66 <div id="div1">
    67 </div>
    68 <div id="div2">
    69 asdf
    70 </div>
    71 </body>
    72 </html>

     php里的继承

    关于php注释

    //这里是注释内容。这种是C++的注释风格,只能注释单行的内容。

    #这里是注释内容。这种是Unix shell的注释风格,也是只能注释单行的内容。

    /*

    这里是注释内容。

    这种注释方法可以使用多行注释,但绝对不能把/* */这个字串再嵌入注释里

    */

     1 <?php
     2 class Person
     3 {
     4     function __construct($name, $sex)
     5     {
     6         $this->name=$name;//->相当于js里面的.   表示“的”
     7         $this->sex=$sex;
     8     }
     9     
    10     function showName()
    11     {
    12         echo $this->name;//echo相当于js里的alert
    13     }
    14     
    15     function showSex()
    16     {
    17         echo $this->sex;
    18     }
    19 }
    20 
    21 class Worker extends Person    //php里面的继承,使用extends继承父亲的特性
    22 {
    23     function __construct($name, $sex, $job)
    24     {
    25         parent::__construct($name, $sex);
    26         
    27         $this->job=$job;
    28     }
    29     
    30     function showJob()
    31     {
    32         echo $this->job;
    33     }
    34 }
    35 
    36 $w1=new Worker('paxster', '男', '扫大街');
    37 
    38 $w1->showName();
    39 $w1->showJob();
    40 ?>

     JS里的继承方式

     1 function Person(name, sex)
     2 {
     3     this.name=name;
     4     this.sex=sex;
     5 }
     6 
     7 Person.prototype.showName=function ()
     8 {
     9     alert(this.name);
    10 };
    11 
    12 Person.prototype.showSex=function ()
    13 {
    14     alert(this.sex);
    15 };
    16 
    17 //-------------------------------------
    18 
    19 function Worker(name, sex, job)  //这个构造函数继承上面的父函数的功能,添加新的功能
    20 {
    21     //this->new出来的Worker对象
    22     //构造函数伪装        调用父级的构造函数——为了继承属性
    23     Person.call(this, name, sex);  //继承父类的call方法
    24     
    25     this.job=job;  //新添加的功能
    26 }
    27 
    28 //原型链        通过原型来继承父级的方法----多次的值传递,产生一条原型链
    29 //Worker.prototype=Person.prototype; 直接继承父类的方法,不使用这种方法  
    30 
    31 for(var i in Person.prototype)  
    32 {
    33     Worker.prototype[i]=Person.prototype[i];
    34 }
    35 
    36 Worker.prototype.showJob=function ()
    37 {
    38     alert(this.job);
    39 };
    40 
    41 var oP=new Person('blue', '男');
    42 var oW=new Worker('blue', '男', '打杂的');
    43 
    44 oP.showName();
    45 oP.showSex();
    46 
    47 oW.showName();
    48 oW.showSex();
    49 oW.showJob();

    instanceof实例属于谁?

    1 var arr1=[1,2,3];
    2 
    3 alert(arr1 instanceof Object);  //arr1属于Object

    引用类型的特点

    1 var arr1=[1,2,3];  //第一个数组和第二个数组
    2 var arr2=arr1;  
    3 
    4 arr2.push(4);    //第一个数组和第二个数组输出的都是1,2,3,4   因为第一个数组引用了第二个数组,也就是第二个数组的改变影响了第一个,因为有一句arr2=arr1
    5 
    6 alert('1:'+arr1);
    7 alert('2:'+arr2);

    改进后的引用

     1 var arr1=[1,2,3];
     2 var arr2=[];  //第二个数组没有去取第一个数组的内容
     3 
     4 for(var i in arr1)  //数组arr2遍历数组arr1里面的内容,复制了一份arr1,不会存在儿子影响父亲的情况
     5 {
     6     arr2[i]=arr1[i];
     7 }
     8 
     9 arr2.push(4);
    10 
    11 alert('1:'+arr1);    
    12 alert('2:'+arr2);

     使用继承实现拖拽

    html结构代码:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <style>
     5 #div1 {width:100px; height:100px; background:red; position:absolute;}
     6 #div2 {width:100px; height:100px; background:yellow; position:absolute;}
     7 </style>
     8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     9 <title>无标题文档</title>
    10 <script src="Drag.js"></script>
    11 <script src="LimitDrag.js"></script>
    12 <script>
    13 window.onload=function ()
    14 {
    15     new Drag('div1');
    16     new LimitDrag('div2');
    17 };
    18 </script>
    19 </head>
    20 
    21 <body>
    22 <div id="div1">
    23 </div>
    24 <div id="div2">
    25 </div>
    26 </body>
    27 </html>

    Drag.js

     1 function Drag(id)
     2 {
     3     var _this=this;
     4     
     5     this.disX=0;
     6     this.disY=0;
     7     this.oDiv=document.getElementById(id);
     8     
     9     this.oDiv.onmousedown=function (ev)
    10     {
    11         _this.fnDown(ev);
    12         
    13         return false;
    14     };
    15 }
    16 
    17 Drag.prototype.fnDown=function (ev)
    18 {
    19     var _this=this;
    20     var oEvent=ev||event;
    21     this.disX=oEvent.clientX-this.oDiv.offsetLeft;
    22     this.disY=oEvent.clientY-this.oDiv.offsetTop;
    23     
    24     document.onmousemove=function (ev)
    25     {
    26         _this.fnMove(ev);
    27     };
    28     
    29     document.onmouseup=function ()
    30     {
    31         _this.fnUp();
    32     };
    33 };
    34 
    35 Drag.prototype.fnMove=function (ev)
    36 {
    37     var oEvent=ev||event;
    38     
    39     this.oDiv.style.left=oEvent.clientX-this.disX+'px';
    40     this.oDiv.style.top=oEvent.clientY-this.disY+'px';
    41 };
    42 
    43 Drag.prototype.fnUp=function ()
    44 {
    45     document.onmousemove=null;
    46     document.onmouseup=null;
    47 };

    limiitdrag.js

     1 function LimitDrag(id)
     2 {
     3     Drag.call(this, id);
     4 }
     5 
     6 //LimitDrag.prototype=Drag.prototype;
     7 
     8 for(var i in Drag.prototype)
     9 {
    10     LimitDrag.prototype[i]=Drag.prototype[i];
    11 }
    12 
    13 LimitDrag.prototype.fnMove=function (ev)
    14 {
    15     var oEvent=ev||event;
    16     var l=oEvent.clientX-this.disX;
    17     var t=oEvent.clientY-this.disY;
    18     
    19     if(l<0)
    20     {
    21         l=0;
    22     }
    23     else if(l>document.documentElement.clientWidth-this.oDiv.offsetWidth)
    24     {
    25         l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
    26     }
    27     
    28     if(t<0)
    29     {
    30         t=0;
    31     }
    32     else if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight)
    33     {
    34         t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
    35     }
    36     
    37     this.oDiv.style.left=l+'px';
    38     this.oDiv.style.top=t+'px';
    39 };

    系统对象:

    1. 宿主对象:由浏览器提供,BOM---window,DOM---document,不同的浏览器对他们的支持不一样
    2. 内置对象:静态对象----Global,Math
    3. 本地对象:非静态对象----需要new出来,也就是创建实例;常用对象----Object、Function、Array、String、Boolean、Number、Date、RegExp、Error
    念念不忘,必有回响。
  • 相关阅读:
    Python学习 Day 1-简介 安装 Hello world
    R Programming week2 Functions and Scoping Rules
    R in action读书笔记(6)-第七章:基本统计分析(中)
    R in action读书笔记(5)-第七章:基本统计分析
    Redis进阶应用:Redis+Lua脚本实现复合操作
    一个项目的SpringCloud微服务改造过程
    中间件增强框架之-CaptureFramework框架
    关系型数据库全表扫描分片详解
    AI中台——智能聊天机器人平台的架构与应用(分享实录)
    如何设计实时数据平台(设计篇)
  • 原文地址:https://www.cnblogs.com/paxster/p/3141832.html
Copyright © 2011-2022 走看看