随笔分类 -  javascript

javascript
摘要:由于项目中用到了hash,自己实现了一个。Hash = function () { } Hash.prototype = { constructor: Hash, add: function (k, v) { if (!this.hasO... 阅读全文
posted @ 2014-04-30 11:41 穆乙 阅读(15336) 评论(0) 推荐(2) 编辑
摘要:开发技术文档汇总:(持续更新)1Underscore 中文文档 github地址 英文文档2 Express中文文档 github地址3 Backbone中文文档Backbone英文文档 github地址4 Jquery中文文档(适合1.0--2,0)5 Bootstrap中文6 Less中文7 ... 阅读全文
posted @ 2013-12-10 11:59 穆乙 阅读(2894) 评论(5) 推荐(5) 编辑
摘要:函数柯里化,是固定部分参数,返回一个接受剩余参数的函数,也称为部分计算函数,目的是为了缩小适用范围,创建一个针对性更强的函数。那么反柯里化函数,从字面讲,意义和用法跟函数柯里化相比正好相反,扩大适用范围,创建一个应用范围更广的函数。使本来只有特定对象才适用的方法,扩展到更多的对象。看一下通用函数:Function.prototype.currying = function() { var that = this; return function() { return Function.prototype.call.apply(that, arguments); ... 阅读全文
posted @ 2013-12-01 22:40 穆乙 阅读(6371) 评论(4) 推荐(7) 编辑
摘要:穆乙:http://www.cnblogs.com/pigtail/p/3447660.html在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家哈斯凯尔·加里命名的,尽管它是 Moses Schönfinkel 和 Gottlob Frege 发明的。这是来自维基百科的名词解释。顾名思义,柯里化其实本身是固定一个可以预期的参数,并返回一个特定的函数,处理批特定的需 阅读全文
posted @ 2013-11-29 00:43 穆乙 阅读(45816) 评论(4) 推荐(13) 编辑
摘要:穆乙:http://www.cnblogs.com/pigtail/p/3447660.html函数是js世界的一等公民,js的动态性、易变性在函数的应用上,体现的淋漓尽致。做为参数,做为返回值等,正是函数这些特性,使得js开发变的有趣。下面就阐述一下,js一个有趣的应用--惰性函数定义(Lazy Function Definition)。惰性载入表示函数执行的分支只会在函数第一次掉用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照合适方式执行的函数,这样任何对原函数的调用就不用再经过执行的分支了。下面我们看几个典型的例子:function addEvent (type, eleme 阅读全文
posted @ 2013-11-26 00:32 穆乙 阅读(8448) 评论(14) 推荐(6) 编辑
摘要:Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象参数:prototype 必需。 要用作原型的对象。 可以为 null。descriptors 可选。 包含一个或多个属性描述符的 JavaScript 对象。“数据属性”是可获取且可设置值的属性。 数据属性描述符包含 value 特性,以及 writable、enumerable 和 configurable 特性。 如果未指定最后三个特性,则它们默认为 false。 只要检索或设置该值,“访问器属性”就会调用用户提供的函数。 访问器属性描述符包含 set 特性和/ 阅读全文
posted @ 2013-11-25 10:13 穆乙 阅读(9696) 评论(1) 推荐(4) 编辑
摘要:滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件使用mousewheel,下面我来给大家具体介绍。Firefox使用DOMMouseScroll,其... 阅读全文
posted @ 2013-10-30 13:22 穆乙 阅读(17685) 评论(0) 推荐(1) 编辑
摘要:document.body.onclick = function(e) { e = e || window.event; var target = e.target || e.srcElement, style = target.currentStyle || window.getComputedStyle(target, null), borderLeftWidth = parseInt(style['borderLeftWidth'], 10), borderTopWidth = parseInt(style['borderTopWid... 阅读全文
posted @ 2013-10-11 13:35 穆乙 阅读(1891) 评论(0) 推荐(0) 编辑
摘要:hashCode = function(str){ var hash = 0; if (str.length == 0) return hash; for (i = 0; i < str.length; i++) { char = str.charCodeAt(i); hash = ((hash<<5)-hash)+char; hash = hash & hash; // Convert to 32bit integer } return hash;}djb2Code = function(str){ var has... 阅读全文
posted @ 2013-09-27 16:27 穆乙 阅读(14130) 评论(0) 推荐(2) 编辑
摘要:面试时,考官问我都看过哪些前端的书,当时竟一时想不起来几本,抽个时间整理一下:一、Javascript方面的书籍:1JavaScript权威指南(第6版):号称javascript圣经,前端必备;前端程序员学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册;2JavaScript高级程序设计(第3版) :前端必备书,如果你想真正进入前端世界,这是一本不可多得的进阶书,没什么好说的,必须细细品读;3JavaScript语言精粹 :这是一本值得任何正在或准备从事JavaScript开发的人阅读,并且需要反复阅读的js书籍;4基于MVC的JavaS 阅读全文
posted @ 2013-09-24 13:23 穆乙 阅读(8975) 评论(6) 推荐(7) 编辑
摘要:观察者模式是对应用系统进行抽象的有力手段。你可以定义一些事件供其他开发人员使用,而并不需要为此深入了解他们的代码。一个事件可以被多个订阅者订阅,而一个订阅者也可以订阅多个不同的事件。对于浏览器这类互动环境来说这非常理想。现在的Web应用程序越来越大,在此背景下,作为一种提高代码的可维护性和简洁性的有力手段,可观察对象的作用更显突出。这种模式的应用有助于防止第三方开发人员和合作伙伴因为对你的应用程序的细节了解得太多而把事情搞糟。提高程的高度解耦有助于程序代码的维护工作。下面是基于javascript的观察者模式:var Events = (function (W) { var sl... 阅读全文
posted @ 2013-04-17 20:14 穆乙 阅读(1202) 评论(0) 推荐(1) 编辑
摘要:观察者模式(有时又被称为发布-订阅模式、模型-视图模式、源-收听者模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划 阅读全文
posted @ 2013-04-02 15:27 穆乙 阅读(599) 评论(0) 推荐(1) 编辑
摘要:document方法:getElementById(id) 返回指定结点的引用getElementsByTagName(name) 返回文档中所有匹配的元素的集合createElement(name) 创建指定类型的新结点createTextNode(text) 创建一个纯文本结点element方法:getAttribute(id) 返回指定属性的值setAttribute(id,value) 给属性赋值removeAttribute(id) 移除指定属性和它的值getElementsByTagName(name) 返回结点内所有匹配的元素的集合node方法:appendChild(child 阅读全文
posted @ 2013-03-13 21:23 穆乙 阅读(820) 评论(0) 推荐(0) 编辑
摘要:添加HTML内容与文本内容以前用的是innerHTML与innerText方法,最近发现还有insertAdjacentHTML和 insertAdjacentText方法,这两个方法更灵活,可以在指定的地方插入html内容和文本内容。insertAdjacentText方法与 insertAdjacentHTML方法类似,只不过只能插入纯文本,参数相同方法名称:insertHtml(where,el,html)参数介绍:where:插入位置。包括beforeBegin,beforeEnd,afterBegin,afterEnd。el:用于参照插入位置的html元素对象html:要插入的htm 阅读全文
posted @ 2013-03-11 13:19 穆乙 阅读(6063) 评论(2) 推荐(0) 编辑
摘要:合并排序是一个O(nlogn)的算法,其基本思想就是一个分治的策略,先进行划分,然后再进行合并,下面举个例子。有这样一组数据,{5,4,1,22,12,32,45,21},如果对它进行合并排序的话,首先将它从中间分开,这样,它就被分成了两个数组{5,4,1,22} {12,32,45,21}。对这两个数组,也分别进行这样的操作,逐步的划分,直到不能再划分为止(每个子数组只剩下一个元素),这样,划分的过程就结束了。划分的过程如下图所示:接下来,我们进行合并操作,依照上图,划分过程是从上到下进行的,而合并的过程是从下往上进行的,例如上图中,最下层{5},{4}这两个数组,如果按升序排列,将他们合并 阅读全文
posted @ 2013-03-10 19:54 穆乙 阅读(1036) 评论(0) 推荐(1) 编辑
摘要:遮罩层覆盖整个页面,IE需要设iframe的透明度;另外禁止选择遮罩下面的元素,采用iframe,如果做半透明,注意,不要把iframe的透明度设为0;否则,将不能禁止选择! 阅读全文
posted @ 2013-02-01 12:36 穆乙 阅读(2451) 评论(0) 推荐(0) 编辑
摘要:转文请标明 --- 出处:穆乙 http://www.cnblogs.com/pigtail/固定头部或者左侧导航现在网站中随处可见,主要是为了提高用户体验;以及右下角的固定广告,页面两侧的固定广告。这些实现起来其实并不困难,都基于一个属性:position:fixed;是可惜IE6不支持;只能退而求其次利用其它办法,比如利用js监听window的resize和scroll事件,重置位置。实现起来也很简单,主要是scrollLeft或者scrollTop以及可视窗口高度来定位。但这些都有一个问题好就是会出现“震动”。所以,又出现另外一种解法,就是利用Internet Explorer的CSS表 阅读全文
posted @ 2013-01-25 20:34 穆乙 阅读(731) 评论(1) 推荐(0) 编辑
摘要:js跨域是个讨论很多的话题。iframe跨域访问也被研究的很透了。一般分两种情况:一、 是同主域下面,不同子域之间的跨域; 同主域,不同子域跨域,设置相同的document.domian就可以解决; 父页访问子页,可以document.getElementById("myframe").contentWindow.document来访问iframe页面的内容;如果支持contentDocument也可以直接document.getElementById("myframe").contentDocument访问子页面内容; 子页访问父页,可以parent. 阅读全文
posted @ 2013-01-24 16:59 穆乙 阅读(120952) 评论(2) 推荐(6) 编辑
摘要:javascript是个入门门槛很低的语言,甚至一个从来没有接触过javascript的技术人员,几小时内就可以写出一个简单有用的程序代码。但是如果因此你就下结论:javascript是门简单的语言。那你就大错特错了。想写出高性能的代码,同样需要具备一个高级程序员的基本素养。一个java或者c++程序员,不一定能写出高性能的javascript代码,但更容易写出高性能的javascript代码。javascript的简单是基于它“胸襟广阔”的包容性。它声明时,不需要指定类型,甚至可以任意的转换类型。它面向对象,却没有类(Class)的限制。它是一门崇尚自由又非常严谨的语言,如果你是一个自由主义 阅读全文
posted @ 2013-01-22 14:36 穆乙 阅读(7701) 评论(4) 推荐(7) 编辑
摘要:在nodejs中,模块大概可以分为核心模块和文件模块。核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net'))。文件模块,则是指js文件、json文件或者是.node文件。在引用文件模块的时候后要加上文件的路径:/.../.../xxx.js表示绝对路径、./xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录。如果既不加/.../、../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹加载。对于加载模块时既没指出./ ../ /.../时,加载模块的搜索路径。如果' 阅读全文
posted @ 2013-01-14 16:36 穆乙 阅读(43461) 评论(1) 推荐(1) 编辑