参考自http://www.2cto.com/kf/201312/261990.html

IC.js文件  自己封装的js类库

  1 /**
  2  *
  3  * @authors Your Name (you@example.org)
  4  * @date    2017-07-18 15:51:06
  5  * @version $Id$
  6  */
  7 if(document.all&&!document.getElementById()){
  8     document.getElementById  = function(id){
  9         return document.all[id];
 10     }
 11 };
 12 if(!String.repeat){
 13     String.prototype.repeat = function(){
 14         return new Array(i+1).join(this);
 15     }
 16 };
 17 if(!String.trim){
 18     String.prototype.trim = function(){
 19         return this.replace(/^\s+|\s+$/g,'');
 20     }
 21 };
 22 (function(){
 23     /*创建自己的库,名称为IC*/
 24     if (!window['IC']) {
 25         window['IC'] = {};
 26     }
 27     function $() {
 28         /*alert()是JavaScript脚本语言中窗口window对象的一个常用方法;
 29         其主要用法就是在你自己定义了一定的函数以后,通过执行相应的操作,
 30         所弹出对话框的语言。并且alert对话框通常用于一些对用户的提示信息。*/
 31         var elements = new Array();
 32         /*Arguments对象能够模拟重载*/
 33         for(var i=0;i<arguments.length;i++){
 34             var element = arguments[i];
 35             if(typeof element == 'string'){
 36                 element = document.getElementById(element);
 37             }
 38             if(arguments.length==1){
 39                 return element;
 40             }
 41             elements.push(element);
 42         }
 43         return element;
 44     }
 45     //把$函数注册到 'myNameSpace'命名空间中
 46     window['IC']['$'] = $;
 47     /*向Node节点对象添加事件,(后面讲)*/
 48     function addEvent(node,type,listener){
 49         if(!(node=$(node))){
 50             return false
 51         };
 52         if(node.addEventListener){
 53             node.addEventListener(type,listener,false)
 54             return true
 55         }else if( node.attachEvent){
 56                 node['e'+type+listener] = listener;
 57                 node[type+listener] = function (){node['e'+type+listener](window.event);};
 58                 node.attachEvent('on'+type,node[type+listener]);
 59                 return true;
 60         }
 61         return false;
 62     };
 63     window['IC']['addEvent'] = addEvent;
 64         /*获取所有指定类名的元素:(所有类型元素,参数1类名,参数2标签名)*/
 65         /*获取所有指定类名的元素:(所有类型元素,参数1类名,参数2标签名)*/
 66         function getElementsByClassName(className,tag,parent){
 67             parent = parent || document;
 68             if(!(parent = $([parent]))) return false;
 69             var allTags = (tag == '*' && parent.all)? parent.all : parent.getElementsByTagName(tag);
 70             var matchingElements = new Array();
 71             className = className.replace(/\-/g,'\\-');
 72             var regex = new RegExp("(^|\\s)"+className+"(\\s|$)");
 73             var element;
 74             for(var i=0;i<allTags.length;i++){
 75                 element = allTags[i];
 76                 if(regex.test(element.className)){
 77                     matchingElements.push(element)
 78                 }
 79             }
 80             return matchingElements;
 81         }
 82         window['IC']['getElementsByClassName' ] = getElementsByClassName;
 83         function bindFunction(obj,func){
 84             return function(){
 85                 /*将方法绑定到对象上*/
 86                 func.apply(obj,arguments);
 87             }
 88         }
 89         window['IC']['bindFunction'] = bindFunction;
 90         function getBrowserWindowSize(){
 91            var de = document.documentElement;
 92            return {
 93                     'width'      :(
 94                              window.innerWidth
 95                              || (de &&de.chileWidth)
 96                              || document.body.clientWidth),
 97                     'height' :(
 98                              window.innerHeight
 99                              || (de &&de.clientHeight)
100                              ||document.body.clientHeight)
101            }
102         };
103             window['IC']['getBrowserWindowSize'] = getBrowserWindowSize;
104 })();

test.js

作用:向window对象里面添加一个load事件。

 1 /**
 2  *
 3  * @authors Your Name (you@example.org)
 4  * @date    2017-07-20 11:15:35
 5  * @version $Id$
 6  */
 7  /* test.js中代码的主要作用是向window对象里面添加一个load事件。*/
 8 IC.addEvent(window,'load',function(){
 9     IC.log.writeRaw('This is Raw');
10     IC.log.writeRaw('<strong>This is bold</strong>');
11     IC.log.header('With a header');
12     //遍历整个 document
13     for(i in document){
14         IC.log.write(i);
15     };
16 })

mylog.js

涉及到 myLogger函数,此函数还包含构造函数,createWindow函数,writeRaw函数。这些函数将在test.js文件中的到验证

 1 /**
 2  *
 3  * @authors Your Name (you@example.org)
 4  * @date    2017-07-20 10:10:13
 5  * @version $Id$
 6  */
 7 function myLogger(id){
 8     id = id || 'ICLogWindow';
 9     // 日志窗体的引用
10     var logWindow = null;
11     //创建日志窗体
12     var createWindow = function(){
13         //引用节点
14         var browserWindowSize = IC.getBrowserWindowSize();
15         var top = (browserWindowSize.height-200)/2||0;//=>如果为空则为0
16         var left = (browserWindowSize.width-200)/2||0;//=>如果为空则为0
17         /*使用UL*/
18         logWindow = document.createElement('UL');//=>在页面内创建UL的元素
19         /*添加ID进行标识*/
20         /*setAttribute() 方法添加指定的属性,并为其赋指定的值。*/
21         logWindow.setAttribute('id',id);
22         /*对窗体进行样式控制*/
23         logWindow.style.position = 'absolute';
24         logWindow.style.top = top+'px';
25         logWindow.style.left = left+'px';
26         logWindow.style.width = '200px';
27         logWindow.style.height = '200px';
28         logWindow.style.overflow = 'scroll';
29         logWindow.style.padding = '0';
30         logWindow.style.margin = '0';
31         logWindow.style.border = '1px solid #000';
32         logWindow.style.backrgoundColor = '#fff';
33         logWindow.style.listStyle = 'none';
34         logWindow.style.fontSize = '12px';
35         document.body.appendChild(logWindow);
36     };
37     //向窗体添加一行
38      //声明特权方法,向日志文件中添加一条记录另一种写法是 myLogger.pro
39     this.writeRaw = function(message){//=>特权方法和全局方法作用相同
40         //如果初始窗体是不存在的,则生成日志窗体
41         if(!logWindow){
42             createWindow();
43         }
44         /*创建Li节点实例*/
45         var li = document.createElement('LI');
46         //进行CSS样式控制
47         li.style.padding = '0';
48         li.style.margin = '0';
49         li.style.border = '1px solid #ccc';
50         li.style.backrgoundColor = '#fff';
51         li.style.listStyle = 'none';
52         li.style.fontSize = '12px';
53         /*验证message信息*/
54         if(typeof message == undefined){
55             li.appendChild(document.createTextNode('Message is undefined'));
56         }else if(typeof li.innerHTML!= undefined){
57             li.innerHTML = message;
58         }else {
59             li.appendChild(document.createTextNode(message))
60         }
61         logWindow.appendChild(li);
62         return true;
63     }
64 };
65 //使用对象自变量的方式声明特权方法
66 myLogger.prototype = {
67     //=>向窗体添加一行,并进行简单处理
68     write : function(message){
69         if(typeof message == 'string'&& message.length == 0){
70             return this.writeRaw('没有输入信息')
71         }
72         if(typeof message!='string'){
73             if(message.toString){
74                 return this.writeRaw(message.toString());
75             }else {
76                 return this.writeRaw(typeof message);
77             }
78         };
79         //将大于号小于号进行正则转换成HTML标记
80         message = message.replace(/</g,"&lt;").replace(/>/g,"&gt;");
81         return this.writeRaw(message);
82     },
83     //=>向窗体添加标题
84     header : function(message){
85         message = '<span style="color:#000;background-color: #f4f4f4;font-weight: bold;padding:0px 5px;">'+message+'</span>'
86         return this.writeRaw(message);
87     }
88 };
89 window['IC']['log'] = new myLogger();

html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 6 <title>实例</title>
 7 <meta name="description" content="">
 8 <meta name="keywords" content="">
 9 <script type="text/javascript" src='IC.js'></script>
10 <script type="text/javascript" src='mylog.js'></script>
11 <script type="text/javascript" src=' test.js'></script>
12 </head>
13 <body>
14 实例参考地址
15 http://www.2cto.com/kf/201312/261990.html
16 </body>
17 </html>

转载于:https://www.cnblogs.com/NB-JDzhou/p/7210790.html

JavaScript-创建日志调试对象(面向对象实例)相关推荐

  1. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)

    和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例 今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以 ...

  2. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例

    今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以英文的占多数,所以,在学习起来似乎比较吃力,不过相信我能坚持下来,顺便提高点英语阅读能力,不过本人英文水 ...

  3. Python入门--创建类的对象

    class Student:native_pace = '山东' # 直接写在类里的变量称为类属性# 初始化方法def __init__(self, name, age):self.na = name ...

  4. Python定义类、创建类的对象(类的实例化)

    定义类 语法格式 在python中,可以通过class关键字定义类,然后通过定义的类来创建实例对象.语法格式如下: calss 类名:类体 注意事项 在python中使用class关键字来定义类,定义 ...

  5. Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法

    一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...

  6. 魔方APP项目-02-服务端项目搭建,创建manage.py文件、构建全局初始化函数创建app应用对象、通过终端脚本启动项目、项目加载配置、数据库初始化、日志初始化、蓝图初始化

    服务端项目搭建 新建项目目录mofangapi,并创建虚拟环境 mkvirtualenv mofang 安装开发中使用的依赖模块 pip install flask==0.12.4 pip insta ...

  7. Javascript基础与面向对象基础~第四讲 Javascript中的类对象

    今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...

  8. C++ 对象和实例的区别,以及用new和不用new创建类对象区别

    起初刚学C++时,很不习惯用new,后来看老外的程序,发现几乎都是使用new,想一想区别也不是太大,但是在大一点的项目设计中,有时候不使用new的确会带来很多问题.当然这都是跟new的用法有关的.ne ...

  9. 通过创建 HttpCookie 对象的实例编写 Cookie

    通过创建 HttpCookie 对象的实例编写 Cookie HttpCookie myCookie = new HttpCookie("UserSettings"); myCoo ...

最新文章

  1. python之vscode中手动选择python解释器(mac)
  2. Xcode 报错Could not find developer disk image,iOS10
  3. 预测分析:R语言实现2.6 特征选择
  4. pytest 15 fixture之autouse=True
  5. inetd的工作流程
  6. 俩虚拟机间通过ssh互相登陆
  7. Dom4j完整教程详解
  8. 关于计算机书籍的收集与整理(一)
  9. 一种增强的md5加密算法
  10. request.get_full_path() 和request.path区别
  11. kubernetes service是什么
  12. ibm刀箱服务器型号查询,IBM 服务器模块 刀箱模块
  13. iOS 11.2 - 11.3.1 越狱教程
  14. 如何卸载冰点还原精灵
  15. C++ 类(继承中的构造和析构)
  16. 【无需卸载,丝滑关闭奇安信天擎开机自启动(步骤超简单)】
  17. 微信小程序开发工具 将已存在的Git项目在新开发者下拉取推送
  18. 国际期货和国内期货的区别带招商
  19. 中国阀门驱动装置行业运行状况与前景趋势研究报告2022-2028年
  20. 对象不可达,一定会被垃圾收集器回收么?

热门文章

  1. 跨域解决请求限制(script标签)(热门搜索出现对应的词条)
  2. 虚拟机vmware11装Mac ox 10.8 解决windows8.1下unlocker202 vmxsmc.exe已停止工作的问题
  3. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
  4. jsp的flash小例子
  5. [转载]从零开始学习jQuery (一) 开天辟地入门篇
  6. 浅析epoll-为何多路复用I/O要使用epoll
  7. u大侠pe系统桌面计算机,详解各种PE启动的过程
  8. java date dateformat_Java中SimpleDateFormat的使用方法
  9. EMR集群安全认证和授权管理
  10. 阿里新晋CNCF TOC委员张磊:“云原生”为什么对云计算生态充满吸引力?