- 博客(47)
- 资源 (118)
- 收藏
- 关注
原创 javascript继承方式之三
3、组合构造函数/原型方式写类,采用前面种方式继承 这种方式父类,子类的属性都挂在构造函数里,方法都挂在原型上。 /** * 父类Polygon:多边形 */function Polygon(sides) { this.sides = sides;}Polygon.prototype.setSides = function(s) {this.sides=
2010-05-29 11:10:00 337
原创 javascript继承方式之二
2、原型方式写类,原型方式继承 core js自身的对象系统就是采用原型方式(prototype based)继承的。或者说corejs没有采用常见的类继承(classbased)系统,而是使用原型继承来实现自己的对象系统。工作中我们也可以用原型方式来实现继承,代码复用以构建自己的功能模块。 /** * 父类Polygon:多边形 * */functi
2010-05-29 11:09:00 325
原创 javascript继承方式之一
面向对象的语言多数都支持继承,继承最重要的优点就是代码复用,从而构建大型软件系统。如果一个类能够重用另一个类的属性和或方法,就称之为继承。从这个角度来看看js的继承方式。js中继承方式与写类方式息息相关。不同的写类方式造成不同的继承方式。各种流行js库继承方式也各不相同。从最简单的复用开始。 1、构造函数写类,通过方法调用复制父类属性给子类实现继承 这里父类,子类都
2010-05-29 11:07:00 319
原创 JScript与SpiderMonkey对继承成员可见性的差异
Object是所有javascript对象的超类,其它对象都继承了Object的属性和方法。 Object默认有一个属性constructor,6个方法hasOwnProperty、isPrototypeOf、propertyIsEnumerable、toLocalString、toString和valueOf。(ECMAScript3.1新增getPrototypeOf方法,fi
2010-05-29 11:05:00 415
jq中html()方法使用不当带来的陷阱
.html方法当不传参数时用来获取元素的html内容,查看源码 return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(rinlinejQuery, "") : null; 得知其通过非标准的但所有浏览器都支持的innerHTML实现。注:html5已接纳该属性(http:...
2010-05-29 10:54:22 183
Chrome中JSON.parse的特殊实现
ECMA 262 Edition5 中提供了原生的JSON支持,其中JSON.parse用来将字符串转成成json,见ECMA 262 Edition5 15.12.2。另见:字符串转换成json的三种方式IE8/Firefox3.5+/Chrome4/Safari4/Opera10 已实现该方法。使用方式很简单: var str = '{"name":"jack"}';v...
2010-05-29 10:10:18 146
原创 具名函数的四种调用方式(3)
这里把函数名首字母大写了,让它符合java类命名规范。 /** * 定义一个函数Car */function Car(color,doors) { var car = {}; car.color = color; car.doors = doors; car.msg = function(){ alert("This is a " + this.c
2010-05-24 09:49:00 426
原创 具名函数的四种调用方式(2)
以函数中有无this来讨论。没有this时返回一个空的对象{},有this时返回一个非空对象。 定义一个没有this的函数 //返回值是基本类型function fun() { return "jack";}var c = new fun();for (var atr in c) { alert(atr);} alert(c);//[object O
2010-05-24 09:48:00 356
原创 具名函数的四种调用方式(1)
1、()小括号运算符 平时最常用的就是()运算符来调用一个函数 //无参函数fun1function fun1() { alert(我被调用了);}fun1()//有参函数fun2function fun2(param) { alert(param);}fun2(我被调用了) ECMAScript3后加入给Functio
2010-05-24 09:46:00 534
eval与window.eval的差别
它们之间有区别吗?开发过程中似乎很少有人去加个额外的window,觉得多此一举。比如ajax过程中回调函数解析json格式字符串: ...function callback(str){ var json = eval('(' + str + ')');}... 通常直接使用eval,而非var json = window.eval('(' + str + ')...
2010-05-21 09:01:19 295
原创 javascript写类方式之十
10、mootools.js的写类方式 mootools.js的最新版本是1.2.3,这里使用的是1.2.0。mootool被设计成非常紧凑的,模块化的,面向对象的的js库。mootool中写类用Class类。Class类由Native类new出来的: /* *Script: Class.js*/var Class = new Native({ name: C
2010-05-20 08:05:00 368
原创 javascript写类方式之九
9、YUI的写类方式 这里引入的是YUI 2.7.0版,只需引入yahoo.js。YUI引入了命名空间,类似于java的包。以下yahoo的工具函数包 YAHOO.namespace YAHOO.lang YAHOO.lang.hasOwnProperty YAHOO.lang.extend YAHOO.lang.augment Y
2010-05-20 08:01:00 414
原创 javascript写类方式之八
8、Ext.js的写类方式 这里用的是Ext core3.0,Ext中用Ext.extend来定义一个类(当然它更多用来扩展一个类),Ext整个框架各种控件如Panel,MessageBox等都是用Ext.extend方法来扩展。这里仅仅用它来定义一个最简单的类。 看Ext.extend的代码可得知,它仍然是用构造函数和原型来组装一个类。 这里只需传两个参数即可,第一个
2010-05-20 08:00:00 361
原创 javascript写类方式之六
这篇开始会分析流行的js库之写类方式。各种库的写类方式虽然千奇百怪,但仍然逃离不了本质---用构造函数和原型来组装类。 6、Prototype.js的写类方式 //prototype.js中的代码var Class = { create: function() { return function() { this.initialize.ap
2010-05-20 07:59:00 308
原创 javascript写类方式之七
7、dojo.js的写类方式 dojo最新是1.3.1了,记得07年时还是0.4。文档也渐渐多了起来,用dojo的也慢慢多了。dojo还发布了core版,压缩后只有27kb。dojo中用dojo.declare方法来定义一个类。dojo.declare的源码就不贴在这里了。dojo.declare有三个参数,参数1:类名className参数2:继承的类superc
2010-05-20 07:59:00 372
原创 javascript写类方式之五
5、用 构造函数+原型 定义一个类;同一构造函数可以定义出多个类型 /** * $define 写类工具函数之二 * @param {Object} constructor * @param {Object} prototype */function $define(constructor,prototype) {
2010-05-20 07:57:00 381
单例/单体模式(Singleton)
首先,单例模式是作为对象的创建模式,此外还包括工厂模式。单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口java中大概是这个样子: class Singleton { //私有,静态的类自身实例 private static Singleton instance = new Singl...
2010-05-17 09:14:49 190
Javascript中大括号“{}”的多义性
JS中大括号有四种语义作用语义1,组织复合语句,这是最常见的 if( condition ) { //...}else { //...}for() { //...} 语义2,对象直接量声明 var obj = { name : 'jack', age : 23}; 整个是个赋值语句,其中的{name:'jack'...
2010-05-17 09:07:14 233
原创 javascript写类方式之四
通过前面几篇得知javascript写类无非基于构造函数和原型。既然这样,我们写个工具函数来写类。 /** * $class 写类工具函数之一 * @param {Object} constructor * @param {Object} prototype */function $class(constructor,prototype) { var c =
2010-05-17 08:59:00 351
原创 javascript写类方式之三
取前面两种的优点:a、用构造函数来定义类属性(字段)b、用原型方式来定义类的方法。就有了第三种方式。这种方式貌似采用的人较多。 3、综合构造函数/原型 /** * Person类:定义一个人,有个属性name,和一个getName方法 * @param {String} name */function Person(name) { this.n
2010-05-17 08:54:00 332
原创 javascript写类方式之二
2、原型方式 /** * Person类:定义一个人,有个属性name,和一个getName方法 */function Person(){}Person.prototype.name = "jack";Person.prototype.getName = function() { return this.name;} 把类的属性(字段),方法
2010-05-17 08:51:00 315
iframe中onload的bug
创建iframe对象,添加load事件,再将iframe添加到body中。Chrome中会造成load事件的handler执行两次。 <!DOCTYPE HTML><HTML> <HEAD></HEAD> <BODY> <script> var ifr = document.creat...
2010-05-14 15:52:02 274
原创 javascript写类方式之一
从这篇起,会由浅到深的分析js OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。 EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。 1、构造函数方式 /** * Person类:定义一个
2010-05-14 15:27:00 420
原创 img标签usemap属性
html的img标签:定义一个图像在网页中引入。它还有个usemap属性很有意思。 看看51ditu首页中有一个地图,中部有个中国地图。点击右键下载下来看下就是一个普通的图片。 但点击地图上的省份却可以出发不同的事件(或打开不同的链接),很有意思。原来是使用了usemap属性。 当然还要定义一个map标签。整份代码如下: img usemap属性
2010-05-14 15:24:00 1570
document.write/writeln非IE/Opera浏览器中可能会造成元素获取不到
document.write/writeln在几年前的代码中见的比较多,多数情况下各浏览器表现一致。 <!DOCTYPE html><html><head></head><body> <script> document.write('<div id="wraper">
2010-05-13 16:26:24 191
原创 js奇淫技巧之遍历数组
正常的for循环就不提了,直接进入正题。如下: //示例1for(var i=0,a;a=["jack","tom","lily","andy"][i++];){ console.log(a);}//示例2var ary = ["jack","tom","lily","andy"];for(var i=0,a;a=ary[i++];){ console.log(
2010-05-13 15:44:00 764
原创 for in的缺陷
for in 语句用来列举对象的属性(成员),如下 var obj = { name:"jack", getName:function(){return this.name} };//输出name,getName for(var atr in obj) { alert(atr);} 不知注意了吗,没有输出obj的toString,valueOf
2010-05-13 15:37:00 747
原创 IE6下iframe内容不显示bug
IE6下的bug实在多,这不这次又碰到一个。 地图搜索结果页面点击一个marker的“更多信息”时,IE7,firefox3.0下都正常。IE6下却无法显示。因为是跨域访问开始以为是http请求慢造成。后更换url后仍然存在。 下面是网上的一些资料 1、认为src不能写在http://be-evil.org/showlog-91.htmlhttp://social.
2010-05-13 15:34:00 5032 3
原创 img标签的galleryimg属性
地图api中有以下代码 var img=document.createElement("img");img.galleryImg=false;//img.galleryImg="no"; img标签的galleryimg属性只在IE6下起作用,是个过时的属性。它的作用是设置是否显示图片工具条(Image Toolbar) 即鼠标放在图片上时会出现如下提示,可以方便
2010-05-13 15:32:00 2972
原创 script跨域访问与XMLHttpRequest
script不受Web浏览器跨域安全限制的束缚,即能实现跨域访问。这是它的最大优点。 另外一点需要注意的是不同浏览器对script的触发事件不同,即回调函数要写在这些函数之中,且只支持异步调用 IE下:加载完成后触发"onreadystatechange"事件firefox下:加载完成后触发"onload"事件 以下是同xmlHttpRequest的比较
2010-05-13 15:29:00 800
原创 兼容鼠标滚轮事件
浏览地图时,使用鼠标滚轮来放大和缩小。即用到了滚轮事件。 这个事件在标准下和IE下是有区别的。firefox是按标准实现的,事件名为"DOMMouseScroll",IE下采用的则是"mousewheel"。 当然一行代码就解决了兼容问题 var mousewheel = document.all?"mousewheel":"DOMMouseScroll";
2010-05-13 15:28:00 805
原创 配置myeclipse代理上网
很多公司是用代理服务器来上网。浏览器,qq,msn等都要设置代理。 每到一个地方都是一个网络配置,导致很多问题,其中就是在代理环境下eclipse的需要更新的时候出问题,以下就是解决方法:window-->preferences-->general-->network connections 选中 manual proxy configuration:填入http prox
2010-05-13 15:25:00 3576 1
原创 用递归实现十进制数转换N进制
最近回顾了下数据结构及算法,以下是用java和js实现的十进制数转换N进制。 java实现/** * baseString 递归调用 * @param num 十进制数 * @param base 要转换成的进制数*/public static String baseString(int num,int base) { String str = ""
2010-05-12 08:56:00 852
原创 java方法传值和传引用
某知名门户网站的一道笔试题 public class Test { public static void stringUpd(String str) { str = str.replace("j", "l"); System.out.println(str); } public static void stringBufferUpd(StringBuffer
2010-05-12 08:51:00 327
原创 js克隆一个数组
一道js面试题,职位是javascript工程师 面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有。 那怎么得到一个新数组呢? 我当时回答:用一个loop将源数组元素依次push到新数组中。这是最简单的方法,但显然不是面试官想要的答案。 最后告知我:利用Array的slice方法。该方法的介绍就不贴在这里了,网上一
2010-05-12 08:49:00 876
原创 IE6下著名的z-index bug
abcc项目实现这样一个功能:点击“上载查询”,弹出一个绝对定位的div(类似qq文件中转站的“上传文件”按钮),里面有上传按钮等,点击后div在最上层。即z-index为最大。在firefox下表现良好,在IE6下无论如何也盖不住select。墨墨说是IE下一个著名的bug,解决方法用一个iframe包住select。 以下是一个测试的静态html,为bug重现及及解决方法。
2010-05-12 08:43:00 1254
转载 JVM启动时的三个类加载器
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloaderbootstrap c
2010-05-12 08:41:00 442
原创 网页截图软件
有时候网页很长,出现了滚动条。这时候如果要看这个网页的效果用windows提供的“印屏幕PRScrn”键就满足不了了。下面是自己使用过的截图软件。IE下测试css等可以用马桶浏览器(傲游Maxthon)firefox3下的插件比较多,Fireshot就不错。以下是安装步骤1、打开firefox3浏览器,工具 > 附加组件,输入Firesh
2010-05-12 08:39:00 449
原创 利用js动态类型特性对数组排序
首先,看看js和java中关系运算符的区别。这里拿大于号做示例(>)。 a、java中的大于号不能用于两个字符串的比较 String s1 = "11", s2 = "12";System.out.println(s1>s2);//编译报错,不能通过 b、js中的则可以,比较的字符串中各个字符ASCII大小var s1="11",s2="12";conso
2010-05-11 09:07:00 486
原创 javascript1.6数组新特性和jquery的几个工具方法
JavaScript 1.6 引入了几个新的Array方法,具体的介绍见:https://developer.mozilla.org/cn/New_in_JavaScript_1.6 JavaScript 1.6在firefox1.5及其后版本支持,但在IE6,IE7甚至IE8上仍然未被支持。jquery的工具方法中提供了类似的功能。 1、Array.forEach()和j
2010-05-11 09:01:00 462
ECMAScript 6入门(样章)
2014-09-23
Rework:每个程序员都应该读的一本书
2014-04-11
Mastering Web Application Development with AngularJS
2013-11-13
结构程序设计
2013-11-05
JavaScript异步编程:设计快速响应的网络应用
2013-06-06
JavaScript面向对象编程指南
2013-04-25
编写可维护的JavaScript
2013-04-25
UNIX编程艺术
2012-08-18
基于MVC的JavaScript Web富应用开发
2012-05-21
Essential JavaScript Design Patterns
2012-04-10
Getting Started with GEO.CouchDB and Node.js
2012-03-07
JavaScript Web Application
2012-02-26
JavaScript Patterns (JavaScript模式)
2011-12-30
HTML5 and CSS3: Develop with Tomorrow's Standards Today
2011-12-08
重构-改善既有代码的设计
2011-01-25
HTML5揭秘 英文版
2011-01-12
HTML 5用户指南 英文版
2011-01-12
jQuery 1.4.2 直观速查表
2010-09-10
HttpWatch.Professional.v5.2.16
2010-09-02
httpwatchpro-v4.0.54
2010-09-02
High.Performance.JavaScript
2010-05-13
JavaScript语言精粹
2010-04-26
Javascript语言精髓与编程实践
2010-04-19
我也能做CTO之程序员职业规划
2010-04-19
EMCA262 V5
2010-04-02
周爱民Qomo框架源码
2009-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人