摘要: String.slice(start,end)returns a string containing a slice, or substring, of string. It does not modify string。slice()返回一个子片段,对原先的string没有影响,与subString的区别是,还可以用负数当参数,相当于是length+start,length+end.Example://from javascript-the definitive Guide 5th Editionvar s = "abcdefg";s.slice(0,4) // Retu 阅读全文
posted @ 2014-01-12 12:38 寂静沙滩 阅读(7977) 评论(0) 推荐(0) 编辑
摘要: javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法:以下是引用片段:functionfunc1(…){…}varfunc2=function(…){…};varfunc3=functionfunc4(…){…};varfunc5=newFunction(); 这些都是声明函数的正确语法。它们和其他语言中常见的函数或之前介绍的函数定义方式有着很大的区别。那么在JavaScript中为什么能这么写?它所遵循的语法是什么呢?下面将介绍这些内容。 . 阅读全文
posted @ 2014-01-12 02:06 寂静沙滩 阅读(376) 评论(0) 推荐(0) 编辑
摘要: jQuery的开篇声明里有一段非常重要的话:jQuery是为了改变javascript的编码方式而设计的.从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库.jQuery改变javascript编码方式!那么它是如何实现它的声明的呢?这里,用以下的一段简短的使用流程:1)查找(创建)jQuery对象:$(”selector”);2)调用jQuery对象的方法完成我们需要完成的工作:$(”selector”).doOurWork();ok,jQuery就是以这种可以说是最简单的编码逻辑来改变javascript编码方式的.这两个步骤是jQuery的编码逻辑核心!要实现这种简 阅读全文
posted @ 2014-01-10 22:59 寂静沙滩 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源。要用到多线程的等方面,也就免不了对线程的控制或用到线程池。 我在做我们现在的那一个抓取框架的时候,就曾经用过java.util.concurrent.ExecutorService作为线程池,关于ExecutorService的使用代码大概如下:java.util.concurrent.Executors类的API提供大量创建连接池的静态方法:1.固定大小的线程池:package BackStage; import java.util. 阅读全文
posted @ 2014-01-10 22:32 寂静沙滩 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 如果对象只是一个数据集,可采用json化再反json化的方式克隆一个对象,这个过程会丢失对象的方法。效率比较低。 可以采用如下递归的方式复制一个对象。function clone(target) { var buf; if (target instanceof Array) { buf = []; //创建一个空的数组 var i = target.length; while (i--) { buf[i] = clone(targe... 阅读全文
posted @ 2014-01-10 13:09 寂静沙滩 阅读(2979) 评论(0) 推荐(0) 编辑
摘要: 写js的时候需要遍历一个对象的属性,把属性名和属性值都提出来,之前没遇到这种需求,查了一下可以用for in的方式.var obj = { "key1":"value1", "key2":"value2", "key3":"value3"};function EnumaKey(){ for(var key in obj ){ alert(key); }}function EnumaVal(){ for(var key in obj ){ alert(obj[key]); }} 阅读全文
posted @ 2014-01-10 11:55 寂静沙滩 阅读(13460) 评论(0) 推荐(5) 编辑
摘要: Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访问和处理。 如果我们用console.log替换处理函数,将可以得到另外的有趣结果: [1,2,3,"csser"].forEach(console.log); 结果: 1, 0, Array[1, 2, 3, "csser"] 2, 1, Array[1, 2, 3, "csser"] 3, 2, Array[1, 2, 3, &quo 阅读全文
posted @ 2013-11-13 22:24 寂静沙滩 阅读(12016) 评论(1) 推荐(4) 编辑
摘要: 页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了解的话,很容易出现一些莫名其妙的效果,痛定思痛读了《CSS Mastery》后总结一下。让我们从基础的CSS知识谈起,相信很多初学者和小弟一样不明白CSS原理,一味追求效果,结果页面漏洞百出,错误匪夷所思,关于盒模型我就不多说了,网上很多,注意一下IE和其他浏览器(W3C规范)的区别就好了。块级元素与行内元素首先谈谈人们经常提及的块级元素和行内(内联)元素p, ul, form, div等元素被称为块级元素,这些元素显示为一块儿内容(会自动换行),span, input 等 阅读全文
posted @ 2013-05-23 10:14 寂静沙滩 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 今天在调试的时候,发现用hover写的样式在火狐上可以,在ie上却不行,百度了下,原来我用的是ie的Quirks模式。这是在http://www.w3help.org网站上查到的结果。问题描述IE6 IE7(Q) IE8(Q) 不支持 A 元素以外的其他元素的 ':hover' 伪类。造成的影响在非 A 元素上使用了 ':hover' 伪类后,可能会使页面在IE6 IE7(Q) IE8(Q)中没有的任何效果。受影响的浏览器IE6 IE7(Q) IE8(Q)问题分析对于此问题,我们通过以下的测试用例来说明。分析以下代码:<style type="t 阅读全文
posted @ 2013-05-17 11:51 寂静沙滩 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 首先明确点认识,javascript 使用的是mark-and-sweep算法进行GC处理。浏览器对DOM采用的是计数器算法进行GC处理。所以如果js中没用dom的操作,纯js对象的话,javascript用自身的GC回收机制是不会产生内存溢出的,当有dom参与到js脚本中,如果对dom对象进行了循环引用,比如闭包(闭包是一种特殊的循环引用),浏览器就无法确认和兼容两种GC回收算法,导致发生内存泄露,就算页面刷新都不能清除掉,只能关闭浏览器。闭包: function A()...{ vara=document.createElement("div"); a.onclick= 阅读全文
posted @ 2013-05-17 00:48 寂静沙滩 阅读(363) 评论(0) 推荐(0) 编辑