跟小D每日学口语
摘要: 当我看到我们项目里面许多个类似功能的函数,就一肚子的火气,这样写JS,脑袋等于被钢板夹了JS没有类似C#的方法重载,不过JS内置的arguments对象可以帮我们解决这种问题。function testarguments() { var ID = arguments.length > 0 ? arguments[0] : null; var callback = arguments.length > 1 ? arguments[1] : null; //TODO:} 你可以传个函数指针,可以传个json,任意搭配实现一个百搭的函数。 阅读全文
posted @ 2012-03-30 11:29 腐乳 阅读(254) 评论(0) 推荐(0) 编辑
摘要: HSSFSheet lo_sheet = (HSSFSheet)lo_workbook.CreateSheet("sheet"); HSSFCellStyle lo_Style = (HSSFCellStyle)lo_workbook.CreateCellStyle();lo_Style.DataFormat = HSSFDataFormat.GetBuiltinFormat("@"); 另外附下源码中的注释部分,关于HSSFDataFormat参数的 0, "General" 1, "0" 2, "0. 阅读全文
posted @ 2011-11-09 15:39 腐乳 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 除前文学习的三种继承外,还有另外三种继承模式:原型继承(Prototypal Inheritance)、寄生继承(Parasitic Inheritance)和寄生组合继承(Parasitic Combination Inheritance)。它们都以下面这个函数为前提的1 function object(o)2 {3 function F(){}4 F.prototype = o;5 return new F();6 }先是定义F(),它相当于是个模板类,接着它的原型对象被指向了传入的参数o,F具有了o的属性和方法(作为原型属性和方法),最后返回一个模板类实例。可... 阅读全文
posted @ 2011-09-17 13:32 腐乳 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 有时也会被叫做伪经典继承(pseudoclassical inheritance),它是结合了原型链和对象伪装各自优点的方式。它的基本思路是使用原型链继承原型上的属性和方法,使用对象伪装继承实例属性。通过定义原型方法,允许函数复用,并允许每个实例拥有它们自己的属性。参考以下代码: 1 function BaseClass(name) 2 { 3 this.name = name; 4 this.colors = ["red","blue"]; 5 } 6 BaseClass.prototype.getName = function(){return th 阅读全文
posted @ 2011-09-17 13:27 腐乳 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 有时也叫构造器偷窃(Constructor Stealing,按字面翻译的,有点不好听)或者叫经典继承(Classical Inheritance)。基本思想很简单:在子类的构造器上调用超类构造器。更确切的说是在子类构造器执行上下文来中执行超类构造器(父类构造器中的this指向子类实例),js提供了apply()和call()函数,它们可以实现这种调用。基本代码如下: 1 function BaseClass() 2 { 3 this.colors=["red","blue"]; 4 } 5 function ChildClass() 6 { 7 //i 阅读全文
posted @ 2011-09-17 13:26 腐乳 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 原型链是采用的最主要的继承方式,它的思路是这样的:每一个类(构造器,js中的function)都有一个原型属性(prototype)指向原型对象,原型对象有一个构造器属性(constructor),它又指回到function,是个循环引用。类的每个实例,也有个原型属性(代码无法访问的,叫做__proto__),它跟构造器原型发生指向的是同一个对象,即同一个类的所有实例共用一个原型对象。要实现两个类型的继承,就是将一个类型的原型对象指向另一个类型的实例,而不在是原来的默认的原型对象。这样就形成了原型链。 子类可以通过原型链获得超类的所有属性和方法。从而实现了继承。基本的js代码如下: 1 ... 阅读全文
posted @ 2011-09-17 13:22 腐乳 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 众所周知C#、java等高级语言是OO的,它们都向开发人员提供的丰富的OO特征,利用这些OO特征我们可以付出尽可能少的工作、开发极复杂的应用,并能对其进行方便而灵活的维护、扩展。并由此形成了对应用开发具有指导意义的OO设计模式,影响着全球不计其数的开发人员和不可估量的应用开发。OO是如此重要,以至于在形形色色的应用开发的方方面面都要引起重视。作为WEB时代的开发人员,在你的WEB开发中采用OOP,无疑会让你的工作大放异彩。如今AJAX是如此的大行其道,js在开发中的重要性被提高到了史无前例的高度。那么在实际工作中如何使js开发按照OO的思想进行呢?这是个复杂而系统的工作,首先还是让我们从js中 阅读全文
posted @ 2011-09-17 13:15 腐乳 阅读(168) 评论(0) 推荐(0) 编辑
摘要: a 1 Array.prototype.swap = function(i, j) 2 { 3 var temp = this[i]; 4 this[i] = this[j]; 5 this[j] = temp; 6 } 7 //冒泡排序 时间复杂度O(n^2) 空间复杂度O(1) 8 Array.prototype.bubbleSort = function() 9 { 10 for (var i = this.length - 1; i > 0; --i) 11 ... 阅读全文
posted @ 2011-09-05 17:35 腐乳 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 在《利用JS特性实现的简单HashTable》文章中,实现了一个极简单的HashTable。利用这个hashtable可以实现一个简单的页面缓存对象cache,代码如下: 1 var cache = function(){ 2 3 var hash = new Hash();//定义一个hashtable容器 4 return { 5 contain : function(key){ 6 return hash.contain(key); 7 ... 阅读全文
posted @ 2011-09-05 17:31 腐乳 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 令人费解的是js提供了内置的Function、Date、Array等对象,却没有提供HashTable对象,但我们利用对象的特性是可以实现的。 js的对象可以看成为一个的hashtable。在对象生命周期内,开发人员可以动态的为他们添加或删除属性、方法。由于对象自身就具有hashtable的特点,那么我只需要加上方便操作的hash接口实现,就是个简单的hash实现了。代码如下: 1 var Hash=null; 2 (function() 3 { 4 //static private member 5 var _h = {}; 6 var _l ... 阅读全文
posted @ 2011-09-05 17:19 腐乳 阅读(252) 评论(0) 推荐(0) 编辑