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

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

 /**
*
* @authors Your Name (you@example.org)
* @date 2017-07-18 15:51:06
* @version $Id$
*/
if(document.all&&!document.getElementById()){
document.getElementById = function(id){
return document.all[id];
}
};
if(!String.repeat){
String.prototype.repeat = function(){
return new Array(i+1).join(this);
}
};
if(!String.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
}
};
(function(){
/*创建自己的库,名称为IC*/
if (!window['IC']) {
window['IC'] = {};
}
function $() {
/*alert()是JavaScript脚本语言中窗口window对象的一个常用方法;
其主要用法就是在你自己定义了一定的函数以后,通过执行相应的操作,
所弹出对话框的语言。并且alert对话框通常用于一些对用户的提示信息。*/
var elements = new Array();
/*Arguments对象能够模拟重载*/
for(var i=0;i<arguments.length;i++){
var element = arguments[i];
if(typeof element == 'string'){
element = document.getElementById(element);
}
if(arguments.length==1){
return element;
}
elements.push(element);
}
return element;
}
//把$函数注册到 'myNameSpace'命名空间中
window['IC']['$'] = $;
/*向Node节点对象添加事件,(后面讲)*/
function addEvent(node,type,listener){
if(!(node=$(node))){
return false
};
if(node.addEventListener){
node.addEventListener(type,listener,false)
return true
}else if( node.attachEvent){
node['e'+type+listener] = listener;
node[type+listener] = function (){node['e'+type+listener](window.event);};
node.attachEvent('on'+type,node[type+listener]);
return true;
}
return false;
};
window['IC']['addEvent'] = addEvent;
/*获取所有指定类名的元素:(所有类型元素,参数1类名,参数2标签名)*/
/*获取所有指定类名的元素:(所有类型元素,参数1类名,参数2标签名)*/
function getElementsByClassName(className,tag,parent){
parent = parent || document;
if(!(parent = $([parent]))) return false;
var allTags = (tag == '*' && parent.all)? parent.all : parent.getElementsByTagName(tag);
var matchingElements = new Array();
className = className.replace(/\-/g,'\\-');
var regex = new RegExp("(^|\\s)"+className+"(\\s|$)");
var element;
for(var i=0;i<allTags.length;i++){
element = allTags[i];
if(regex.test(element.className)){
matchingElements.push(element)
}
}
return matchingElements;
}
window['IC']['getElementsByClassName' ] = getElementsByClassName;
function bindFunction(obj,func){
return function(){
/*将方法绑定到对象上*/
func.apply(obj,arguments);
}
}
window['IC']['bindFunction'] = bindFunction;
function getBrowserWindowSize(){
var de = document.documentElement;
return {
'width' :(
window.innerWidth
|| (de &&de.chileWidth)
|| document.body.clientWidth),
'height' :(
window.innerHeight
|| (de &&de.clientHeight)
||document.body.clientHeight)
}
};
window['IC']['getBrowserWindowSize'] = getBrowserWindowSize;
})();

test.js

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

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

mylog.js

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

 /**
*
* @authors Your Name (you@example.org)
* @date 2017-07-20 10:10:13
* @version $Id$
*/
function myLogger(id){
id = id || 'ICLogWindow';
// 日志窗体的引用
var logWindow = null;
//创建日志窗体
var createWindow = function(){
//引用节点
var browserWindowSize = IC.getBrowserWindowSize();
var top = (browserWindowSize.height-200)/2||0;//=>如果为空则为0
var left = (browserWindowSize.width-200)/2||0;//=>如果为空则为0
/*使用UL*/
logWindow = document.createElement('UL');//=>在页面内创建UL的元素
/*添加ID进行标识*/
/*setAttribute() 方法添加指定的属性,并为其赋指定的值。*/
logWindow.setAttribute('id',id);
/*对窗体进行样式控制*/
logWindow.style.position = 'absolute';
logWindow.style.top = top+'px';
logWindow.style.left = left+'px';
logWindow.style.width = '200px';
logWindow.style.height = '200px';
logWindow.style.overflow = 'scroll';
logWindow.style.padding = '0';
logWindow.style.margin = '0';
logWindow.style.border = '1px solid #000';
logWindow.style.backrgoundColor = '#fff';
logWindow.style.listStyle = 'none';
logWindow.style.fontSize = '12px';
document.body.appendChild(logWindow);
};
//向窗体添加一行
//声明特权方法,向日志文件中添加一条记录另一种写法是 myLogger.pro
this.writeRaw = function(message){//=>特权方法和全局方法作用相同
//如果初始窗体是不存在的,则生成日志窗体
if(!logWindow){
createWindow();
}
/*创建Li节点实例*/
var li = document.createElement('LI');
//进行CSS样式控制
li.style.padding = '0';
li.style.margin = '0';
li.style.border = '1px solid #ccc';
li.style.backrgoundColor = '#fff';
li.style.listStyle = 'none';
li.style.fontSize = '12px';
/*验证message信息*/
if(typeof message == undefined){
li.appendChild(document.createTextNode('Message is undefined'));
}else if(typeof li.innerHTML!= undefined){
li.innerHTML = message;
}else {
li.appendChild(document.createTextNode(message))
}
logWindow.appendChild(li);
return true;
}
};
//使用对象自变量的方式声明特权方法
myLogger.prototype = {
//=>向窗体添加一行,并进行简单处理
write : function(message){
if(typeof message == 'string'&& message.length == 0){
return this.writeRaw('没有输入信息')
}
if(typeof message!='string'){
if(message.toString){
return this.writeRaw(message.toString());
}else {
return this.writeRaw(typeof message);
}
};
//将大于号小于号进行正则转换成HTML标记
message = message.replace(/</g,"&lt;").replace(/>/g,"&gt;");
return this.writeRaw(message);
},
//=>向窗体添加标题
header : function(message){
message = '<span style="color:#000;background-color: #f4f4f4;font-weight: bold;padding:0px 5px;">'+message+'</span>'
return this.writeRaw(message);
}
};
window['IC']['log'] = new myLogger();

html

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>实例</title>
<meta name="description" content="">
<meta name="keywords" content="">
<script type="text/javascript" src='IC.js'></script>
<script type="text/javascript" src='mylog.js'></script>
<script type="text/javascript" src=' test.js'></script>
</head>
<body>
实例参考地址
http://www.2cto.com/kf/201312/261990.html
</body>
</html>

JavaScript-创建日志调试对象(面向对象实例)的更多相关文章

  1. Javascript创建类和对象

    现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: <script type="text/javascript"> var person = ...

  2. Javascript 构造函数、原型对象、实例之间的关系

    # Javascript 构造函数.原型对象.实例之间的关系 # 创建对象的方式 # 1.new object() 缺点:创建多个对象困难 var hero = new Object(); // 空对 ...

  3. 5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系

    前言:用了这么久js,对于它的原型链一直有种模糊的不确切感,很不爽,隧解析之. 本文主要解决的问题有以下三个: (1)constructor 和 prototype 以及实例之间啥关系? (2)pro ...

  4. JavaScript创建日志文件并记录时间的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 try { var WSShell = WScript.CreateObject("WScript.Shel ...

  5. Javascript 原型链之原型对象、实例和构造函数三者之间的关系

    前言:用了这么久js,对于它的原型链一直有种模糊的不确切感,很不爽,隧解析之. 本文主要解决的问题有以下三个: (1)constructor 和 prototype 以及实例之间啥关系? (2)pro ...

  6. javascript创建一个基于对象的栈结构

    上篇博客介绍了基于数组创建一个栈,这是用对象创建一个栈 s1.声明一个Stack类 class Stack { constructor() { this.count = 0; this.items = ...

  7. Python 面向对象(创建类和对象,面向对象的三大特性是指:封装、继承和多态,多态性)

    概念:                                                                                                 ...

  8. 2014年辛星完全解读Javascript第六节 对象

    随着面向对象的普及,现在很多语言都在支持面向对象,Javascript也不例外,所谓对象,就是拥有属性和方法的数据.这里的属性其实就是变量,这里的方法,其实就是函数.但是Javascript的面向对象 ...

  9. 理解类、对象、实例、原型链以及继承 - WPF特工队内部资料

    理解类.对象.实例.原型链以及继承 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

随机推荐

  1. [Python Web]部署完网站需要做的基本后续工作

    简述 今天自己上线了一个简单的 Page,没有什么功能就是一个展示页. 但是,我发现部署完,上线后,还要弄不少东西.下面就是我记录.整理的一些上线网站基本都会用到的网站和配置. 加入统计代码 这个是必 ...

  2. 如何比较版本号--Python实现

    需求 在写一个程序Django项目的setup程序(初始化环境,比如设置PIP源,安装该项目依赖的各种模块等操作)遇到一个系统当前模块版本和项目所需版本的比较然后给出建议是忽略还是升级.我的要求是不仅 ...

  3. Jenkins结合.net平台之ftp客户端

    上一节我们讲解了如何配置ftp服务端,本节我们讲解如何使用winscp搭建ftp客户端,为什么使用winscp而不是filezilla客户端版,前面我们简单说过,这里不再赘述. 下载winscp以后我 ...

  4. Redis应用之[限制访问频率]

      我们知道当网站的访问量突然很大的时候肯定会对服务器造成影响,甚至无法访问,如果是正常的访问那么很好说明业务量增大可以考虑系统的扩展,但是如果是搜索引擎爬虫频繁访问或是一些恶意访问,那这时候我们就应 ...

  5. 杭电ACM2003--求绝对值

    求绝对值 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. JavaScript 基础结构

    注释      代码注释可以使用//或者/* */ // 这是一个单行注释 /* * 这是 * 一个 * 多行 * 注释 */ 变量      变量用于存储数据,在同一作用域内变量不得重名,定义语法: ...

  7. [Go] golang原子函数锁住共享资源

    1.atomic包里的几个函数以及sync包里的mutex类型,提供了解决方案2.原子函数能够以很底层的加锁机制来同步访问整型变量和指针3.atomic.AddInt64(&counter, ...

  8. linux学习笔记-shell-script相关知识

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.shell script的执行方法 条件:shell脚本文件必须具备可读可执行权限 1.直接命令执行 (1)使用绝对路径执行 ...

  9. iOS----------计算一段代码执行时间

    CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end ...

  10. 关于如何使用xposed来hook某支付软件

    由于近期有业务上的需要,所以特地花时间去研究了一下如何使用hook技术.但是当我把xposed环境和程序编写完成时,突然发现手机上的某个支付软件无法使用了.这个时候我意识到,应该是该软件的安全机制在起 ...