随笔分类 -  javascript

摘要:最近在看jQuery源码的时候看到这样一段代码://DefinealocalcopyofjQueryjQuery=function(selector,context){//ThejQueryobjectisactuallyjusttheinitconstructor'enhanced'returnnewjQuery.fn.init(selector,context,rootjQuery);}从中可以看到jQuery是个函数,这个函数有个返回值,而这个返回值就是通常所说的那个jQuery Object. 而这个返回值是通过new jQuery.fn.init()方法构造的。而jQ 阅读全文
posted @ 2012-09-06 20:09 orchid 阅读(231) 评论(0) 推荐(0)
摘要:最近开发了用了jQuery,也玩了玩jQuery的插件。上次使用jQuery是一年前,从没弄过jQuery插件,下次在用jQuery也不知道是什么时候,不如现在总结一下。再从聪明的脑袋也抗不如岁月的冲刷,总结,总结,总结~ 1,插件的定义 首先,何为插件? “插件是一种遵循一定规范的应用程序接口编写出来的程序。很多软件都有插件,插件有无数种。” ---------百度百科 jQuery插件也同样,遵循一定的规范,能够融入jQuery Library。 2,开发插件的好处 如果做一件事情没有意义,那么还做他干什么呢?所以,开发一个jQuery插件有什么好处呢? 1) 抽象... 阅读全文
posted @ 2012-09-06 15:48 orchid 阅读(1368) 评论(0) 推荐(0)
摘要:我们往往有这样的需求,我们需要先图像的高度和宽度,然后做后续的处理。比较普遍的做法是等到图片的onload事件发生后再去得到图片的高度和宽度的。现在的问题是,图像的高度和宽度一定要在图像加载完之后才能得到吗?答案是否定的。浏览器在图片数据返回的时候就能知道图像的高度和宽度,只是我们不知道。可以用下面的例子证明:html: <html><body><divid="panel"></div><scriptsrc="testify.js"></script></body>< 阅读全文
posted @ 2012-08-21 22:54 orchid 阅读(495) 评论(0) 推荐(0)
摘要:Images from different serverscan be downloaded more than two at atime, but once your browser encounters a<script> tag, it can no longer downloadmultiple items in parallel. Having them atthe bottom means it will help speed up yourpage load time.一句话,提供页面加载速度,至于怎么提高,还是个很复杂的事情。 阅读全文
posted @ 2012-07-26 20:18 orchid 阅读(432) 评论(0) 推荐(0)
摘要:javascript中的事件分为两级:DOM level 0 与 DOM level 2。DOM level 0应该算是戏称,因为它不属于DOM标准,与DOM level 2完全不同。在DOM level中把事件写到标签里面,例如:<input type="button" value="Press Me" onclick="alert('thanks');">其实这样做相当于在js中这样写:xx.onclick=function(){alert('thanks');}因为如果typeof i 阅读全文
posted @ 2012-04-08 16:55 orchid 阅读(328) 评论(0) 推荐(0)
摘要:part 1:在javascript中可以处理正则表达式的有,regexp.exec,regexp.test,string.match,string.replace,string.split.而且,在javascript中正则表达必须写在一行。javascript中的正则表达式字面量包含在/ /中part 2:正则表达式标志: G 全局的(匹配多次) I 大小写不敏感 M 多行例子: var myrge=/\d+/i正则表达式转义: \d [0-9] \D[^0-9] \s空白字符 \S 非空白字符 \w [0-9a-z_A-Z] \W 前面的补集 \b 字边界 \ i i为1 2 3.... 阅读全文
posted @ 2012-02-28 21:32 orchid 阅读(297) 评论(0) 推荐(0)
摘要:1,javascript的数组就是对象,对对象的一切操作都可以应用到数组上,数组的下标就是的属性名。数组比对象仅仅多了个lengh属性。可以给数组添加方法,但是此时legth不会变化,只有增加数字属性时legth长度才会发生变化。code:var a=[2,3,4];a['7']=20;document.write(a.length) //82,javascript没有真正的数组。真正的数组是一段内存空间,根据下标计算元素的地址,直接存取,效率很高。javascript中把数组看做对象,键名为数字的对象。3,javascript中的数组元素的类型可以任意,不同类型的元素放到数组 阅读全文
posted @ 2012-02-27 19:45 orchid 阅读(571) 评论(0) 推荐(1)
摘要:part 1:函数的套接是什么东西?这是在《javascript精粹》中看到的概念,书上也没给出具体的定义。据我的理解,参数值在从第一一个函数中传递到第二个函数,然后与第二个函数的参数值一起参与运算,有点像接力的意思。part 2:codefirstFun=function(){sum=0;vari;for(i=0;i<arguments.length;i++){sum+=arguments[i];}returnsum;}firstFun.curry=function(){vararg=arguments;//第一个函数的参数列表varthat=this;//指向第一个函数,可被执行va 阅读全文
posted @ 2012-02-26 19:03 orchid 阅读(336) 评论(0) 推荐(0)
摘要:this,who are you?这个问题有时很重要。概括的来讲:this是个引用,永远指向当前代码所处的对象中。还有个需要注意的技巧:如何动态的改变这个this?也就是说我能规定this是谁吗?答案是可以的,你可以控制这件事。可以用call()函数和apply()函数。call()和apply()是Function.prototype对象中的方法,也就是说任何函数都有一个call和apply方法,用这个方法可以定义该方法执行的上下文(this)和参数。看代码:输出:apply和call把第一个参数定义为上下文对象,也就是this的指向,其余参数作为函数的参数。不同的是apply的第二个参数是 阅读全文
posted @ 2011-04-19 21:37 orchid 阅读(527) 评论(0) 推荐(0)
摘要:闭包意味着内层的函数可以引用外层函数内的变量,即使外层函数的执行已经终止,引用依然存在。看下面这个例子:有这样一个导航<ul> <li>随笔</li> <li>文章</li> <li>新闻</li></ul>为每一个itm添加点击事件:var liEle=document.getElementsByTagName('li');for(var i=0;i<liEle.length;i++){liEle[i].onclick=function(){alert(i);}}alert( 阅读全文
posted @ 2011-04-19 21:16 orchid 阅读(234) 评论(0) 推荐(0)
摘要:第一句话需要记住的:javascript中的作用域由函数划分而非由块(如 if while)划分。第二句话需要记住的:所有的全局作用域的变量其实都是window对象的属性。第三局话需要记住的:如果一个变量不用var声明,那么这个变量不管定义在哪里,它都是全局的。 阅读全文
posted @ 2011-04-19 20:40 orchid 阅读(247) 评论(0) 推荐(0)
摘要:在javascript中进行类型检查,主要有两种方式。一种是利用typeof操作符,一种是利用javascript所有对象都有的一个constructor属性。一:先来分析typeof用typeof来进行类型检查的方式:用typeof进行类型检查,所有的自定义类型都会返回object,所以不能区分出到底是个对象。二:用construtor属性constructor属性的原理:所有的javascript对象都有一个constructor属性,它引用的是原本用来构造该对象的那个函数。用constructor属性进行类型检查的方式:代码:输出:所以,用construcor能够尽心更加准确的类型检测。 阅读全文
posted @ 2011-04-19 20:31 orchid 阅读(255) 评论(0) 推荐(0)
摘要:1,setTimeout() 从技术上讲,当setTimeout函数被调用时,浏览器将把该语句添加到待执行的语句列表中,同时程序中的其他语句并不会停止,而是继续运行。只要完成了当前正执行的语句,浏览器就会检测待执行的语句列表,并且执行已经到期的语句。如果指定的延迟时间到了,但是浏览器仍在执行其他任务,那么setTimeout函数指定的任务将会延迟,知道所有其他任务都已经完成。  在看这样一段语句:... 阅读全文
posted @ 2010-04-10 11:35 orchid 阅读(1702) 评论(0) 推荐(0)
摘要:1,IE使用attachEvent/detachEvent方法来添加和删除事件监听器;w3c使用addEventListener/removeEventListener方法。2,IE对其事件使用onevent的命名方式,而w3c的是event的命名方式。3,IE事件监听器内使用的是一个全局的Event对象,而w3c是将event对象作为参数传递给监听器。4,为了避免触发默认的事件行为,IE的做法是要求程序员设置Event对象中的returnValue属性值为false,而w3c的做法是执行preventDefault方法。5,IE没有提供对事件捕获阶段的支持。6,要停止事件的传递,IE的做法是 阅读全文
posted @ 2010-04-06 19:50 orchid 阅读(495) 评论(0) 推荐(0)
摘要:1,Prototype程序库   这是第一个把document.getElementById()简化为$的程序库。   比如:原来的var myele=document.getElementById('id')等价于var myele=$('id') 此外,$还扩展了一些功能   比如:var eleArray=$('id1','id2','id3','id4')能够返回一个包含4个对象的数组。 ... 阅读全文
posted @ 2010-04-05 21:51 orchid 阅读(476) 评论(0) 推荐(0)