2014年3月3日

javascript闭包详解

摘要: 以前写过一篇关于javascript闭包的随笔,javascript闭包,但是写的不够详细,也没有体现出闭包的强大之处。故作此篇。众所周知,javascript没有块级作用域,只有函数作用域。那就意味着定义在函数中的参数和变量在函数外部是不可见的,而在一个函数内部任何位置定义的变量,在该函数内部任何地方都可见。这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。首先,我们来构造一个简单的对象 1 var testObj = { 2 value: 10, 3 add: function(inc){ 4 this.value += (typeof inc ... 阅读全文

posted @ 2014-03-03 22:32 ArthurPatten 阅读(1210) 评论(1) 推荐(0) 编辑

2014年2月19日

linux命令备忘

摘要: 1.cat说明:将一个文件的内容连续输出在屏幕上参数:-n 显示时连行号一起输出到屏幕上2.more说明:功能类似cat,不过是按页显示,最基本的指令就是按空白键(space)显示下一页,按b键(back)显示上一页。参数:+n 从第n行开始显示-n 一次显示的行数-c 从顶部清屏,然后显示+/pa... 阅读全文

posted @ 2014-02-19 11:27 ArthurPatten 阅读(302) 评论(0) 推荐(0) 编辑

2014年1月21日

javascript函数的4种调用方式

摘要: 在javascript中一共有4种函数调用模式,分别是:方法调用模式、函数调用模式、构造函数调用模式和apply(call)调用模式,这4种模式的主要差异在于如何初始化关键参数this。方法调用模式当一个函数被保存为对象的一个方法时,我们就称它为一个方法。当一个方法被调用时,this被绑定到该对象。方法可以使用this访问自己所属的对象。var testObj = { value: 0, a: 10, b: 20, sum: function(){ this.value = this.a + this.b; }};testObj.sum();testObj.value; /... 阅读全文

posted @ 2014-01-21 08:35 ArthurPatten 阅读(1355) 评论(0) 推荐(1) 编辑

2014年1月7日

javascript的类和构造函数

摘要: 在javascript中,类的实现是基于其原型继承机制的。如果两个实例都从同一个原型对象上继承了属性,我们就说它们是同一个类的实例。那么,如果两个对象继承自同一个原型,那基本上可以认为它们是由同一个构造函数创建并初始化的。先来看一个例子function Test(a, b){ this.a = a; this.b = b;}Test.prototype = { add: function(){ return this.a + this.b; }};var o1 = new Test(10, 20);o1.add(); //30var o2 = new Test(1, 2);o2... 阅读全文

posted @ 2014-01-07 23:42 ArthurPatten 阅读(2044) 评论(0) 推荐(0) 编辑

2014年1月5日

javascript原型和原型继承

摘要: 每一个javascript对象(null除外)都和原型对象相关联,每一个对象都从原型对象继承属性。所有通过对象直接量创建的对象都具有同一个原型对象,并可以通过javascript代码Object.prototype获得对原型对象的引用。通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。因此,同使用{}创建对象一样,通过new Object()创建的对象也继承自Object.prototype。同样,通过new Array()创建的对象的原型就是Array.prototype,通过new Date()创建的对象的原型就是Date.prototype。首先,我 阅读全文

posted @ 2014-01-05 23:16 ArthurPatten 阅读(880) 评论(1) 推荐(0) 编辑

2013年11月28日

javascript获取元素的计算样式

摘要: 使用css控制页面有4种方式,分别为行内样式(内联样式)、内嵌式、链接式、导入式。行内样式(内联样式)即写在html标签中的style属性中,如内嵌样式即写在style标签中,例如链接式即为用link标签引入css文件,例如导入式即为用import引入css文件,例如@import url("test.css")如果想用javascript获取一个元素的样式信息,首先想到的应该是元素的style属性。但是元素的style属性仅仅代表了元素的内联样式,如果一个元素的部分样式信息写在内联样式中,一部分写在外部的css文件中,通过style属性是不能获取到元素的完整样式信息的。因 阅读全文

posted @ 2013-11-28 00:45 ArthurPatten 阅读(1827) 评论(0) 推荐(1) 编辑

2013年11月3日

判断滚动条到底部

摘要: 判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。scrollTop为滚动条在Y轴上的滚动距离。clientHeight为内容可视区域的高度。scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。废话不多少说,赶紧上代码(兼容不同的浏览器)。//滚动条在Y轴上的滚动距离function getScrollTop(){ var scrollTop = 0, bodyScro.. 阅读全文

posted @ 2013-11-03 20:02 ArthurPatten 阅读(5692) 评论(1) 推荐(4) 编辑

2013年10月19日

setTimeout中0毫秒延时

摘要: 先来看段代码,思考一下执行的结果。alert(1);setTimeout(function(){alert(2);}, 0);alert(3);估计很多人认为执行结果为1,2,3,原因就是认为setTimeout的0毫秒延时相当于没有延时,直接执行程序。这是标准的错误。执行结果应该是1,3,2。我们都知道javascript是单线程处理任务的,而setTimeout是异步事件,当javascript引擎遇到异步事件时会将其放到队列里,而不是立刻执行,需要等到前面处于等待状态的事件处理程序全部执行完成后再调用它(JavaScript engines only have a single thre 阅读全文

posted @ 2013-10-19 15:33 ArthurPatten 阅读(999) 评论(3) 推荐(0) 编辑

2013年9月24日

javascript中call和apply方法

摘要: 我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数。call和apply的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用。例如,如果要想以对象o的方法来调用函数f,可以按如下的方式使用call和apply方法: f.call(o); f.apply(o);可以按如下的代码来理解: o.m = f; //将f存储为o的临时方法 o.m(); //调用这个临时方法 delete o.m; //将这个临时方法删除来个示例吧。 function testFun(){ return this.a + t... 阅读全文

posted @ 2013-09-24 12:49 ArthurPatten 阅读(1621) 评论(3) 推荐(3) 编辑

2013年9月23日

javascript闭包

摘要: 在学习javascript闭包之前,需要先了解一下"作用域链"。每一段javascript代码都有一个与之关联的作用域链(scope chain),这个作用域链是一个对象列表或者链表,这组对象定义了这段代码"作用域中"的变量。当javascript需要查找变量x的值的时候,它会从链中的第一个对象开始查找,如果这个对象有一个名为x的属性,则会直接使用这个属性的值,如果第一个对象不存在名为x的属性,javascript会继续查找链上的下一个对象。如果第二个对象依然没有名为x的属性,则会继续查找下一个对象,以此类推。如果作用域链上没有任何一个对象含有属性x,那 阅读全文

posted @ 2013-09-23 23:08 ArthurPatten 阅读(1106) 评论(2) 推荐(1) 编辑

导航