`
zhouyrt
  • 浏览: 1186731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
8、Ext.js的写类方式   这里用的是Ext core3.0,Ext中用Ext.extend来定义一个类(当然它更多用来扩展一个类),Ext整个框架各种控件如Panel,MessageBox等都是用Ext.extend方法来扩展。这里仅仅用它来定义一个最简单的类。   看Ext.extend的代码可得知,它仍然是用构造函数和原型来组装一个类。   这里只需传两个参数即可,第一个参数是根类Object,第二个是原型。   /** * Person类 * @param {Object} name */ var Person = Ext.extend(Object ...
7、dojo.js的写类方式   dojo最新是1.3.1了,记得07年时还是0.4。文档也渐渐多了起来,用dojo的也慢慢多了。dojo还发布了core版,压缩后只有27kb。dojo中用dojo.declare方法来定义一个类。dojo.declare的源码就不贴在这里了。dojo.declare有三个参数, 参数1:类名className 参数2:继承的类superclass 参数3:构造器,方法props 单纯的定义一个类实际只需传第一,三两个参数。因为这里只讨论如何定义一个类,不讨论继承。代码如下:   //定义类名 var className = & ...
这篇开始会分析流行的js库之写类方式。各种库的写类方式虽然千奇百怪,但仍然逃离不了本质---用构造函数和原型 来组装类。   6、Prototype.js的写类方式   //prototype.js中的代码 var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } //简化后的 function Clazz() { return function(){ this.initial ...
5、用 构造函数+原型 定义一个类;同一构造函数可以定义出多个类型   /** * $define 写类工具函数之二 * @param {Object} constructor * @param {Object} prototype */ function $define(constructor,prototype) { var c = constructor || function(){}; var p = prototype || {}; return function() { for(var atr ...
4、构造函数 + 原型 直接组装一个类;同一构造函数将组装出同一类型   通过前面几篇得知javascript写类无非基于构造函数 和原型 。既然这样,我们写个工具函数来写类。   /** * $class 写类工具函数之一 ...
取前面两种的优点: a、用构造函数来定义类属性(字段) b、用原型方式来定义类的方法。 就有了第三种方式。这种方式貌似采用的人较多。   3、综合构造函数/原型   /** * Person类:定义一个人,有个属性name,和一个getName方法 * @param {String} name */ function Person(name) { this.name = name; } Person.prototype.getName = function() { return this.name; }   这样,即可通过构造函数构造不同nam ...
2、原型方式   /** * Person类:定义一个人,有个属性name,和一个getName方法 */ function Person(){} Person.prototype.name = "jack"; Person.prototype.getName = function() { return this.name;}   把类的属性(字段),方法都挂在prototype上。   造几个对象测试下:   var p1 = new Person(); var p2 = new Person(); console.log(p1.g ...
从这篇起,会由浅到深的分析js OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。   EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。   1、构造函数方式   /** * Person类:定义一个人,有个属性name,和一个getName方法 * @param {String} name */ function Person(name) { this.name = name; ...
html的img标签:定义一个图像在网页中引入。它还有个usemap属性很有意思。   看看51ditu首页中有一个地图,中部有个中国地图。点击右键下载下来看下就是一个普通的图片。   但点击地图上的省份却可以出发不同的事件(或打开不同的链接),很有意思。原来是使用了usemap属性。   当然还要定义一个map标签。整份代码如下:   <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> &l ...
正常的for循环就不提了,直接进入正题。如下:   //示例1 for(var i=0,a;a=["jack","tom","lily","andy"][i++];){ console.log(a); } //示例2 var ary = ["jack","tom","lily","andy"]; for(var i=0,a;a=ary[i++];){ console.log(a); }   从firebug控制 ...

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等内置属性(或称内置成员,隐藏属性和预定义属性)。即for in用来列举对象的显示成员(自定义成员)。   如果重写了内置属性呢,下面就重写obj的toString var obj = {nam ...
IE6下的bug实在多,这不这次又碰到一个。   地图搜索结果页面点击一个marker的“更多信息”时,IE7,firefox3.0下都正常。IE6下却无法显示。因为是跨域访问开始以为是http请求慢造成。后更换url后仍然存在。   下面是网上的一 ...
地图api中有以下代码   var img=document.createElement("img"); img.galleryImg=false;//img.galleryImg="no";   img标签的galleryimg属性只在IE6下起作用,是个过时的属性。它的作用是设置是否显示图片工具条(Image Toolbar)   即鼠标放在图片上时会出现如下提示,可以方便用户保存,打印,发送邮件等   当然右键单击图片的菜单上也会有“图片另存为”(英文是Save Piciure As)   需要注意的是,即使在IE6上也 ...
script不受Web浏览器跨域安全限制的束缚,即能实现跨域访问。这是它的最大优点。   另外一点需要注意的是不同浏览器对script的触发事件不同,即回调函数要写在这些函数之中,且只支持异步调用   IE下:加载完成后触发"onreadystatechange"事件 firefox下:加载完成后触发"onload"事件   以下是同xmlHttpRequest的比较                                                                        Dynamic  scrip ...
浏览地图时,使用鼠标滚轮来放大和缩小。即用到了滚轮事件。   这个事件在标准下和IE下是有区别的。firefox是按标准实现的,事件名为"DOMMouseScroll ",IE下采用的则是"mousewheel "。   当然一行代码就解决了兼容问题   var mousewheel = document.all?"mousewheel":"DOMMouseScroll";   事件属性,IE是event.wheelDelta,Firefox是event.detail 属性的方向值也不一样,IE ...
Global site tag (gtag.js) - Google Analytics