Element不是一个类(不是从Class扩展出来的), 感觉是对Dom操作的包装对象.
看了一下类图, Element仅仅作为SVG和VML的父类使用, 这样组织的好处还没体会到
OpenLayers学习8-Bounds(首个类)
Bounds边界, 这是第一次看OpenLayers类的代码, 好好体会了一下他怎么组织代码:
OpenLayers.Bounds在完成OpenLayers.Class()类的声明之后, OpenLayers.Bounds只是指向构造函数.
当new OpenLayers.Bounds()时, 产生一个实例, 此实例才是所需对象
实例构造时传入”左下右上”四个参数, 类中的全部方法以此”左下右上”为判断的基础,
实例方法纯完面向对象, 很少有js里面向过程的思想
类的静态方法写法类似:OpenLayers.Bounds.fromArray = function() {return …}, 补充完善OO.
OpenLayers学习7-工具类Util_4
一:尺寸计算
|
|
OpenLayers学习6-工具类Util_3
一:DOM位置
|
|
二: URL操作
|
|
三:浏览器兼容检测
|
|
OpenLayers学习5-工具类Util_2
一: 鼠标操作
|
|
二: 距离计算
|
|
三: URL操作
|
|
四: 比例尺相关的计算
|
|
OpenLayers学习4-工具类Util_1
本来想直接看OpenLayers.Map对象(7277行), 然后按着使用api的顺序继续读代码
后来看了下估计直接看看不懂, 先扫一扫零碎和独立的代码吧.
最独立的应该就是Util 先从Util开始, 预计Util写两到三篇(看了三分之一就感觉收获颇丰, 真tmNb)
OpenLayers学习3-BaseTypes对基础类型对象的扩展
OpenLayers里从新封装了原生的基本对象, 比如String对象,
设计上, 解决了原生方法不够使的问题, 也没破坏基本对象的prototype, 不会和其他类库冲突
这些类就像Util工具, 没什么上下文的状态,
调用时候就直接调用: OpenLayers.String.startsWith(AAA,BBB) 通过处理拿到结果完事
OpenLayers学习-使用geoServer发布的本地WMS服务
公司的API和OpenLayers都用了好长时间了, 从没研究过调用的服务是怎么发出来的.
今天用geoServer学一下. 这博文没什么技术含量, 就是步骤太多 记录下:
js继承3:__proto__,prototype和new
原型链里最重要的属性就是prototype, prototype里存储了从上游拷贝而来的属性
Chrome里用proto表示prototype的指向,
比如说: X = new Y();
X对象的proto指向X对象的原型链上游Y, 再由Y的proto指向Y对象的原型链上游, 从而构成一条原型链条.
js继承2:图解原型链中prototype和constructor的关系
一:问题的起因是这样的:
|
|
问题在于:
F.prototype被赋值为字面量对象{}, 而{}相当于是new Object().
所以解决问题的方法如下:
所以说, 想要修正F的prototype原型链, 需要在F.prototype的字面量中, 赋值
|
|
二: 到这其实目标已经完成了
但是上述代码除了修正了F的原型链, 还意外的说明实例f.constructor指向了Object
那么第一个问题来了:
1.Object的constructor指向哪呢?
Object.constructor//function Function() { [native code] }
//指向”Function”
//其实js内置对象Array, Sting, Number, Function的constructor都指向”Function”
如果说类(function F())中有有prototype, 对象(var f = new F())中有constructor,
那么第二个问题来了:
2.Object有prototype么? Object.prototype里有什么呢?
Object.prototype//Object {}
//空的什么都没有, 这也佐证了F.prototype被赋值为字面量对象{}后, constructor是错误的
第三个问题更有意思:
3.Object.prototype.constructor是什么呢? (也就是说最开始错误的指向哪了呢)
Object.prototype.constructor//function Object() { [native code] }
顺这个思路 第四第五第六第n个问题如下:
Object.prototype.constructor.prototype是什么?
Object.prototype.constructor.prototype.constructor是什么?
… …
Object.constructor.constructor是什么呢?
… …
通过答案其实发现prototype和constructor是循环引用的
三:先来说Object对象的原型链
Object对象的原型链比较特殊:画个草图说明一下:
|
|
从上图能看出prototype和constructor是怎么循环引用的, 下面来说最开始碰到的问题
四:prototype和constructor是怎么循环引用的呢
1:先说是不经过修正的情况
2:是经过修正的
这样画完就清晰多了