随笔分类 -  JavaScript

摘要:早上看到《JavaScript 每周导读》【第三期】一文,里面发现一篇文章(Extending JavaScript – The Right Way),觉得还不错,翻译过来跟大家共享,本文并不是逐字逐句进行翻译,尽量说得通俗易懂。 原文地址:Extending JavaScript – The Right Way以下是译文 JavaScript已经内置了很多强大的方法,但有时你需要的某个功能在内置的方法中没有,我们怎么来优雅地扩展JavaScript功能呢。 例如我们想增加一个capitalize()方法来实现首字母大写,通常我们这样写:if(!String.prototype.ca... 阅读全文
posted @ 2012-04-12 11:01 artwl 阅读(3286) 评论(7) 推荐(5) 编辑
摘要:前言 当前,在软件开发中单元测试越来越受到开发者的重视,它能提高软件的开发效率,而且能保障开发的质量。以往,单元测试往往多见于服务端的开发中,但随着Web编程领域的分工逐渐明细,在前端Javascript开发领域中,也可以进行相关的单元测试,以保障前端开发的质量。 在服务器端的单元测试中,都有各种各样的测试框架,在JavaScript中现在也有一些很优秀的框架,但在本文中,我们将自己动手一步步来实现一个简单的单元测试框架。 JS单元测试有很多方面,比较多的是对方法功能检查,对浏览器兼容性检查,本文主要谈第一种。 本文检查的JS代码是我以前写的一个JS日期格式化的方法,原文在这里(jav... 阅读全文
posted @ 2012-04-09 15:41 artwl 阅读(1582) 评论(4) 推荐(2) 编辑
摘要:继承 继承是面向对象语言的必备特征,即一个类能够重用另一个类的方法和属性。在JavaScript中继承方式的实现方式主要有以下五种:对象冒充、call()、apply()、原型链、混合方式。 下面分别介绍。对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值。因为构造函数只是一个函数,所以可以使ClassA的构造函数成为ClassB的方法,然后调用它。ClassB就会收到ClassA的构造函数中定义的属性和方法。 示例:function ClassA(sColor){ this.color=sColor; this.sayColor=function(){ ... 阅读全文
posted @ 2012-04-01 14:37 artwl 阅读(701) 评论(0) 推荐(3) 编辑
摘要:工厂方式 创建并返回特定类型的对象。 function createCar(sColor,iDoors,iMpg){ var oTempCar=new Object(); oTempCar.color=sColor; oTempCar.doors=iDoors; oTempCar.mpg=iMpg; oTempCar.showColor=function(){ alert(this.color); } return oTempCar;} 调用示例:var oCar1=createCar("red",4,23);var oCar2=c... 阅读全文
posted @ 2012-03-30 21:48 artwl 阅读(650) 评论(4) 推荐(0) 编辑
摘要:前言一直比较喜欢收集网页特效,很多时候都会遇到CSS被压缩过的情况,这时查看起来就会非常不方便,有时为了减少文件大小,也会对自己的CSS进行压缩,网上提供这样服务的很多,但都不尽如人意,因此打算自己动手写一个JS来进行CSS的格式化和压缩原理CSS的结构如下:选择器{ css属性声明:值;}所以对CSS格式化也就比较简单,大致分为以下几步;1、把多个空格合并成一个,去掉换行2、对处理后的字符串按"{"进行分组3、遍历分组,对含有"}"的部分再次以"}"进行分组4、对分组后的数据进行处理,主要是加上空格和换行对CSS压缩就比较简单了,把 阅读全文
posted @ 2012-03-25 19:16 artwl 阅读(5036) 评论(7) 推荐(12) 编辑
摘要:Math对象的属性E:值e,自然对数的底LN10:10的自然对数LN2:2的自然对数LOG2E:以2为底E的对数LOG10E:以10为底E的对数PI:值派SQRT1_2:1/2 的平方根SQRT2:2的平方根Math对象的方法:最大值与最小值min()&&max()用于取一组数中的最小值跟最大值。示例:var iMax=Math.Max(1,2,3);alert(iMax);//outputs 3var iMin=Math.Min(1,2,3);alert(iMin);//outputs 1约对值abs()用于返回数字的绝对值。示例:var iNegOne=Math.abs(- 阅读全文
posted @ 2012-03-18 21:16 artwl 阅读(570) 评论(0) 推荐(0) 编辑
摘要:在博问中看到一个问题(为什么说这段JavaScript代码存在循环引用)中有一篇好文章,特转过来学习下。 原文地址:JavaScript 中的内存泄露模式 本文地址:JavaScript 中的内存泄露模式【转】 JavaScript 是用来向 Web 页面添加动态内容的一种功能强大的脚本语言。它尤其特别有助于一些日常任务,比如验证密码和创建动态菜单组件。JavaScript 易学易用,但却很容易在某些浏览器中引起内存的泄漏。在这个介绍性的文章中,我们解释了 JavaScript 中的泄漏由何引起,展示了常见的内存泄漏模式,并介绍了如何应对它们。 注意本文假设您已经非常熟悉使用 Ja... 阅读全文
posted @ 2012-03-13 16:29 artwl 阅读(934) 评论(0) 推荐(1) 编辑
摘要:混乱的URI编码 JavaScript中编码有三种方法:escape、encodeURI、encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString JavaScript中的还好,只提供了三个,C#中主要用的就有这么多,还没有列出其他编码(HTML),一多就弄不明白,弄不明白就心生恐惧,心生恐惧就变得苦逼,本文就向大家详细解释在JavaScript及C#中如何对URI进行编码的方法(注:本文不涉及到其他编码)。escape:不推荐使... 阅读全文
posted @ 2012-03-07 00:24 artwl 阅读(49892) 评论(49) 推荐(103) 编辑
摘要:内置对象 定义:由ECMAScript实现提供的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现。 由定义可知开发者不必明确实例化内置对象,它已被实例化了。在ECMAScript-262只定义了两个内置对象,即Global和MathGlobal Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。 由于在ECMAScript中不存在独立的对象,所有函数都必须是某个对象的方法,如前面提到的isNaN()、isFinite()、parseInt()和parseFloat()等,都是Global对象的方法。 escape()、encodeURI... 阅读全文
posted @ 2012-03-06 22:48 artwl 阅读(839) 评论(0) 推荐(0) 编辑
摘要:创建var d=new Date();要注意的是在JavaScript中月份的值是从0到11(0表示1月)。设置日期和时间值设置日期和时间值有两种方法:1、只声明距离1970年1月1日凌晨12点的毫秒数 a、直接用距离1970年1月1日凌晨12点的毫秒数 var d=new Date(0); b、parse方法: parse方法接受字符串为参数,把该字符串转换成日期值,返回的是毫秒数。 例如为2012年2月27日创建Date对象:var d=new Date(Date.parse("Feb 27,2012")); 如果传给parse方法的字符串不能转换成日期,该函数返回Na 阅读全文
posted @ 2012-02-27 21:33 artwl 阅读(606) 评论(0) 推荐(1) 编辑
摘要:代码如下:function numInstring(str){ str=str.replace(/ /ig,""); var strArr=str.split(""); var result=[],beforeLength,afterLength,reg; for(var i=0;i<strArr.length;i++){ if(str.indexOf(strArr[i])!=-1){ beforeLength=str.length; reg=new RegExp(strArr[i],"ig"); ... 阅读全文
posted @ 2012-02-26 22:53 artwl 阅读(1465) 评论(4) 推荐(1) 编辑
摘要:创建Array对象//onevar aValues=new Array();//twovar aValues=new Array(20);//threevar aColors=new Array();aColors[0]="red";aColors[1]="green";aColors[2]="blue";//fourvar aColors=new Array("red","green","blue");//fivevar aColors=["red",& 阅读全文
posted @ 2012-02-26 16:09 artwl 阅读(602) 评论(0) 推荐(0) 编辑
摘要:需求 把含有rowspan、colspan的table还原。 例如原table为: 还原后的table为:代码原理 对table进行遍历,如果td的rowspan属性值大于1,则给当前的td的父元素的兄弟元素添加td,如果td的colspan属性值大于1,则在当前的td元素后添加td完整代码//本文首发博客园:http://artwl.cnblogs.com(2012/02/08)jQuery.fn.RevertTable=function(){ $("tr",this).each(function(trindex,tritem){ $(tritem).find(" 阅读全文
posted @ 2012-02-08 22:55 artwl 阅读(4155) 评论(1) 推荐(3) 编辑
摘要:前言 上一篇文章(详解强大的jQuery选择器之基本选择器、层次选择器)介绍了jQuery四类选择器中的基本选择器、层次选择器,本文将介绍剩下的两种选择器:过滤选择器、表单选择器。 本文仍使用上一篇文章中的示例页面。一、过滤选择器 过滤选择器主要是通过特定的过滤规则来筛选出所需要的DOM元素,过滤规则与CSS中的伪类选择器语法相同。 按照不同的过滤规则,过滤选择器可以分为以下几种: 1、基本过滤选择器 2、内容过滤选择器 3、可见性过滤选择器 4、属性过滤选择器 5、子元素过滤选择器 6、表单对象属性过滤选择器 下面就对这几种过滤选择器分别加以介绍。1.1基本过滤选择器 ... 阅读全文
posted @ 2012-02-07 23:48 artwl 阅读(11064) 评论(7) 推荐(11) 编辑
摘要:前言 自从接触了jQuery后就为其强大的选择器所震撼,这也正是jQuery的优势所在。 jQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及jQuery独创的高级而复杂的选择器。另外还可以加入插件使其支持XPath选择器,甚至开发者可以编写属于自己的选择器(即选择器插件,参考上篇:jQuery插件原来如此简单——jQuery插件的机制及实战)。正是jQuery强大的选择器功能,让它很容易上手,吸引了大批的开发者,本文就来介绍一下强大的jQuery选择器。jQuery选择器类型 jQuery选择器主要分为四类: 1、基本选择器 2、层次选择器 3、过滤选择器 4、... 阅读全文
posted @ 2012-02-06 22:51 artwl 阅读(6751) 评论(12) 推荐(15) 编辑
摘要:jQuery插件的种类1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。此类插件可以发挥出jQuery选择器的强大优势,有相当一部分的jQuery的方法,都是在jQuery脚本库内部通过这种形式“插”在内核上的,例如parent()方法,appendTo()方法等。2、封装全局函数 可以将独立的函数加到jQuery命名空间下。如常用的jQuery.ajax()方法、去首尾空格的jQuery.trim()方法,都是jQuery内部作为全局函数的插件附加到内核上去的。3、选择器插件 虽然jQuery的选择器十分强大,但在少数情... 阅读全文
posted @ 2012-02-05 21:39 artwl 阅读(5279) 评论(3) 推荐(12) 编辑
摘要:Function类定义 Function类可以表示开发者定义的任何函数,用Function类直接创建函数的语法如下:var function_name=new Function(agrument1,agrument2,...,argumentN,function_body); 每个argument都是一个参数,最后一个参数是函数主体(要执行的代码)。 示例:function sayHi(sName,sMessage){ alert("Hello "+sName+","+sMessage);} 还可以如下定义它:var sayHi=new Function 阅读全文
posted @ 2012-02-04 12:53 artwl 阅读(812) 评论(3) 推荐(1) 编辑
摘要:if语句 语法:1 if(condition){2 statement1;3 }4 else{5 statement2;6 }迭代语句 1、do-while语句 语法:1 do{2 statement3 }while(expression); 2、while语句 语法:1 while(expression){2 statement3 } 3、for语句 语法:1 for(initialization;expression;post-loop-expression){2 statement;3 } 4、for-in语句 语法:1 for(... 阅读全文
posted @ 2012-01-02 15:34 artwl 阅读(441) 评论(0) 推荐(1) 编辑
摘要:2.9.5、加性运算符 加性运算符(即加号和减号)通常是最简单的运算符,不过在ECMAScript中,每个加性运算符都有大量的特殊行为。 1、加法运算符:1 var iResult=1+2;2 console.log(iResult);//outputs 3 特殊性:某个运算数是NaN,结果为NaNInfinity加Infinity,结果为Infinity-Infinity加-Infinity,结果为-InfinityInfinity加-Infinity,结果为NaN如果两个运算数都是字符串,把第二个字符串连接到第一个字符串上如果只有一个运算数是字符串,把另一个运算数转换为字符串,结果是... 阅读全文
posted @ 2012-01-02 13:23 artwl 阅读(478) 评论(0) 推荐(1) 编辑
摘要:背景 日期格式化是编程中最常用的功能之一,C#中的日期格式化功能做的相当强大,方便易用,但JavaScript中却很不给力,也有网友给出了日期格式化方法:http://www.cnblogs.com/donghongtao/archive/2010/01/07/1641145.html,但用起来仍不方便。刚才看到博问中的一个问题(求一JS日期格式化函数,最好跟C#中的使用方法类似),于是就把自己写的一个日期格式化方法分享给大家,欢迎拍砖。方法代码 原理就是重写Date的toString方法(跟C#保持一致),对传入的格式化参数内的内容进行替换,代码如下:Date.prototype.toS.. 阅读全文
posted @ 2011-12-29 11:42 artwl 阅读(2461) 评论(2) 推荐(1) 编辑

个人简介

var ME = {
	"name": "土豆/Artwl",
	"job": "coding",
	"languages": [
		"JS", "HTML",
                "CSS", "jQuery"
		"MVC",".NET",
		"设计模式"
	],
	"hobby": [
		"阅读", "旅游",
		"音乐", "电影"
	]
}
TOP