JavaScript小特性(7)——面向对象
摘要:面向对象编程(OOP),是目前主流的编程方式,似乎能够OOP的语言,才会被大多数人视为好语言,不能OOP的语言都是“奥特曼”。而JavaScript,则是常常被人误解成“奥特曼”的一种语言,殊不知,JavaScript有着一种更高级的OOP特性。在传统的OOP语言中,Object是Class的一个实例,一个Class可以继承自另一个Class,我们可以理解为“基于类型(Class)”;而JavaScript的语法中并没有Class的概念,Object传承自哪里并不重要,重要的是它能做什么,我们可以理解为“基于原型(Prototype)”。下面就去看看JavaScript的OOP特性吧。1、一切
阅读全文
posted @
2012-08-29 10:24
【艾伦】
阅读(407)
推荐(3) 编辑
backbone的extend(0.9.2)
摘要:0.9.2版 原创,转载请标明 3Q....1 var AppView = Backbone.View.extend({2 3 4 5 })6 7 console.log(AppView)AppView是 Backbone.View 的一个视图模型子类,即AppView是父类返回的一个新的构造函数源代码如下: var extend = function(protoProps, staticProps) { var parent = this; var child; if (protoProps && protoProps.hasOwnProperty('construc
阅读全文
posted @
2012-08-26 07:29
【艾伦】
阅读(2119)
推荐(3) 编辑
给模型添加ORM,与持久化记录
摘要:var Model = { inherited:function () { }, created:function () { }, prototype:{ init:function () { } }, //给类添加属性 extend:function (obj) { var extended = obj.extended; for (var i in obj) { this[i] = obj[i]; } if (extended) exte...
阅读全文
posted @
2012-08-24 16:32
【艾伦】
阅读(373)
推荐(1) 编辑
原型继承
摘要:if (typeof Object.create !== "function") { Object.create = function (o) { function F() { } F.prototype = o; return new F(); }}var Model = { inherited:function () { }, created:function () { }, prototype:{ init:function () { } }, cre...
阅读全文
posted @
2012-08-24 15:48
【艾伦】
阅读(358)
推荐(1) 编辑
"ORM"
摘要:ORM是什么?对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。对象-关系映射(O
阅读全文
posted @
2012-08-24 15:12
【艾伦】
阅读(505)
推荐(1) 编辑
自定义事件
摘要:/** * 事件对象 * bubbles 表示事件是否通过DOM已冒泡形式触发 * * button 如果有鼠标按下的按钮 * * altKey Alt键 * * shiftKey shift * * meate Meate * * isChar 当前按下的键是否标示一个字符 * * charCode unicode值 (仅对keypress) * * keyCode 非unicode * * which * * pageX,pageY 事件发生时相对于页面(viewprot) 的坐标 * * screenX screeY * * currentTarget ...
阅读全文
posted @
2012-08-24 14:50
【艾伦】
阅读(343)
推荐(1) 编辑
控制 "类" 库的作用域
摘要:/** * 1 .函数调用返回时undefinde ,执行上下文是window * 2. new 构造,执行上下文从全局对象变成一个空的上下文,这个上下文代表新生的实列 * 因此this关键字指向当前的实例 * * 3. 默认情况下,构造函数没有返回,默认返回this,否则返回任意非原始的类型值 * * **///兼容bind方法if (!Function.prototype.bind) { Function.prototype.bind = function (obj) { var slice = [].slice, args = sl...
阅读全文
posted @
2012-08-24 14:23
【艾伦】
阅读(393)
推荐(1) 编辑
"类" 库添加继承
摘要:var Class = function (parent) { var klass = function () { this.init.apply(this, arguments); } if (parent) { /** * 所有的子类都共享了同一个原型 * 避免在继承类的时候创建实例,只有实例的属性才会被继承 * 而非类的属性,设置对象的__proto__ * **/ var ctor = function () { }; ctor....
阅读全文
posted @
2012-08-24 14:20
【艾伦】
阅读(442)
推荐(1) 编辑
创建类
摘要:var Person = function (name ){ this.name = name;}//必须这种var p = new Person('aaron')//这个有问题Person('aaron')/** * 1 .函数调用返回时undefinde ,执行上下文是window * 2. new 构造,执行上下文从全局对象变成一个空的上下文,这个上下文代表新生的实列 * 因此this关键字指向当前的实例 * * 3. 默认情况下,构造函数没有返回,默认返回this,否则返回任意非原始的类型值 * * **/var Class = function(){
阅读全文
posted @
2012-08-24 14:19
【艾伦】
阅读(445)
推荐(0) 编辑
Backbone.Events
摘要:Backbone中Events的中只有3个方法,分别是on, off, trigger,十分清晰,也没有其他依赖,下面我们来分析一下。 Events 是一个可以被mix到任意对象的模块,它拥有让对象绑定和触发自定义事件的能力。 事件在被绑定之前是不需要事先声明的,还可以携带参数。我们通过一个例子来看:var object = {};_.extend(object, Backbone.Events);object.bind("alert", function(msg) { alert("Triggered " + msg);});关键是_.extend ,
阅读全文
posted @
2012-08-18 13:21
【艾伦】
阅读(4908)
推荐(3) 编辑
Backbone架构+流程图
摘要:参考资料http://documentcloud.github.com/backbone/http://www.csser.com/tools/backbone/backbone.js.html官网介绍Backbone通过提供模型Models、集合Collection、视图Veiew赋予了Web应用程序分层结构。通过以下方式实现分层结构: 模型Model绑定键值数据和自定义事件; 集合Colection是模型的有序或无序集合,带有丰富的可枚举API; 视图View声明事件监听函数; 将模型、集合、视图与服务端的RESTful JSON接口连接。自调用匿名函数整个Backbone的源码用
阅读全文
posted @
2012-08-18 13:14
【艾伦】
阅读(3641)
推荐(5) 编辑