简单的控制器结构

var  Controller = {};
//创建一个users控制器
(Controller.users = function ($) {
var nameClick = function() {
//....
};
$(function() {
$("#click").click(nameClick);
});
})(jQuery);

var Controller = {
user: function($) {
var userClick = function() {
//....
};
$(function() {
$("#tabs").click(userClick);
})
}
};
Controller.user(jQuery);

创建类

var Class = function() {
//js保留了class名称
var klass = function() {
//this为创建的实例,其在编译阶段就被赋予相应属性了;
this.init.apply(this, arguments);
}
klass.prototype.init = function() {this.name = "klass"};
return klass;
}
//这里等价于var Person = Class();
var Person = new Class; Person.prototype.init = function() {this.name = "person"};
//生成的实例的类型为Klass
var person = new Person;

根据传入参数稍作处理

var Class = function () {
var klass = function() {
arguments = arguments[0];
this.init.call(this, arguments);
}
klass.prototype.init = function(obj) {
var name = obj.name || "klass";
this.name = name;
}
return klass;
};
var Person = new Class;
Person.prototype.init = function(obj) {
var name = obj.name || "person";
this.name = name;
};
var person = new Person({name:"jinks"});

给“类”库添加方法

var Class = function() {
var klass = function() {
this.init.apply(this, arguments)
};
klass.fn = klass.prototype;
klass.fn.parent = klass;
klass.fn.init = function(){};
//这是给类方法添加方法
klass.extend = function(obj) {
var extended = obj.extended;
for(var prop in obj) {
klass[prop] = obj[prop];
}
extended && extended(klass);
}
//与extend不同,方法使直接写进继承的原型中
klass.include = function(obj) {
var included = obj.included;
for(var prop in obj) {
klass.fn[prop] = obj[prop];
}
included && included(klass);
}
return klass;
}
//Person通过fn属性来访问klass.prototype
var Person = new Class; Person.prototype.init = function() {
this.name = "person";
//...
}
//注意这是方法不是对象,不是引用地址,所以每个类添加的方法不会共用
Person.extend({
find: function() {},
exists: function() {},
});
//添加给类方法的原型中,所以同一类方法的实例都会有
Person.include({
save: function() {},
destroy: function() {}
});
//person通过parent来访问klass
var person = new Person;

基于原型的类继承

var Animal = function() {};
Animal.prototype.breath = function() {
console.log("breath");
}
var Dog = function() {};
//Dog继承了Animal
Dog.prototype = new Animal;
Dog.prototype.wag = function() {
console.log("wag tail");
} var dog = new Dog;
dog.wag();
dog.breath();

给“类”库添加继承

var Class = function(parent) {
var klass = function() {
this.init.apply(this, arguments);
}
//基于基于原型的类继承,改变klass原型
if(parent) {
var subclass = function() {};
subclass.prototype = parent.prototype;
klass.prototype = new subclass;
}
klass.fn = klass.prototype;
klass.fn.parent = klass;
klass.fn.init = function(){};
/*include和extend代码*/ return klass
}
var Animal = new Class;
Animal.include({
breath: function() {}
});
var Cat = new Class(Animal);
var tommy = new Cat;
tommy.breath();

控制"类"库的作用域

var Class = function(parent) {
var klass = function() {
this.init.apply(this, arguments);
}
if(parent) {
var subclass = function() {};
subclass.prototype = parent.prototype;
klass.prototype = new subclass;
}
klass.prototype.init = function() {};
klass.fn = klass.prototype;
klass.fn.parent = klass; klass.extend = function(obj) {
var extended = obj.extended;
for(var i in obj) {
klass[i] = obj[i];
}
if(extended) extended(klass)
};
klass.include = function(obj) {
var included = obj.included;
for(var i in obj) {
klass.fn[i] = obj[i];
}
if(included) included(klass)
}
klass.proxy = function(func) {
var self = this;
return (function() {
return func.apply(self, arguments);
});
}
klass.fn.proxy = klass.proxy;
return klass;
}
var Button = new Class; Button.extend({
init: function(elem) {
this.elem = jQuery(elem);
this.elem.click(this.proxy(this.click));
//上面其实等价于: this.elem.click(this.click.bind(this));
},
click: function() {alert(0)}
}); Button.init("button");

mvc-1mvc和类(1)的更多相关文章

  1. 一点ASP.NET MVC Html.Helper类的方法

    一点ASP.NET MVC Html.Helper类 这里就只写一个Html.ActionLink()和Html.DropdownList(). Html.ActionLink()里有三个参数,第一个 ...

  2. PHP MVC框架核心类

    PHP MVC框架核心类 现在我们举几个核心框架的例子演示:在framework/core下建立一个Framework.class.php的文件.写入以下代码: // framework/core/F ...

  3. asp.net mvc自定义JsonResult类来防止MaxJsonLength超过限制

    前不久在做一个项目的时候,我用到了mvc的webapi返回了一个大数据,结果报了500错误,如下图所示: Server Error in ‘/’ Application. Error during s ...

  4. (译文)MVC通用仓储类

    Generic Repository Pattern MVC Generic Repository Pattern MVC 原文链接:http://www.codeproject.com/Articl ...

  5. MVC缓存OutputCacheAttribute 类提高网站效率(转)

    原文转自:http://www.cnblogs.com/iamlilinfeng/p/4419362.html 命名空间:  System.Web.Mvc 程序集:  System.Web.Mvc(在 ...

  6. spring mvc 的Controller类默认Scope是单例(singleton)的

    使用Spring MVC有一段时间了,之前一直使用Struts2,在struts2中action都是原型(prototype)的, 说是因为线程安全问题,对于Spring MVC中bean默认都是(s ...

  7. 自己动手写控件(模仿mvc htmlhelper的类)

    自定义helper类,要求命名空间在 System.Web.Mvc之下,要求,静态类,静态方法,特殊生成对应html的返回字段, 传递Htmlhleper,返回特定类型 返回值是MvcHtmlStri ...

  8. MVC Controller 基类中的Request

    今天在测试自己MVC程序的时候发现之前写代码的一个BUG,需求是每个页面要获取当前URL链接中包含的城市ID,我把获取url的方法写到了Controller的基类BaseController(Base ...

  9. ASP.NET MVC 创建控制器类过程

    MvcHandler.ProcessRequestInit()方法: 1.1获取控制器的名称string requiredString = this.RequestContext.RouteData. ...

  10. Spring MVC中一般类使用service

    在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.S ...

随机推荐

  1. LayoutComponent类,用于layout的组件类。 LayoutComponent保存的所有用于布局的数据。

      LayoutComponent ()   默认构造函数 更多...     ~LayoutComponent ()   默认的析构函数 更多...     CREATE_FUNC (LayoutC ...

  2. Apache prefork 模块指令分析

    问题背景: 在一台只有内存的vps上安装directadmin之后经常内存耗,经过查看之后发现Apache成了罪魁祸首急速消耗内存SWAP剩余空间都是0,最终导致内核开始大下杀手,把MySQL都杀了, ...

  3. LR 测试数据库总结

    今天工作中需要对mysql进行性能测试 我尝试用LR来做:但是mysql需要现在电脑上安装一个OBDC的mysql驱动器,然后在电脑的管理工具中的数据源中加入这个mysql驱动,测试连接数据库成功,O ...

  4. PCL初步使用

    转载:http://blog.csdn.net/vbskj/article/details/7819828 本次试验的目的是利用PCL库来重建地形点云数据,并进行显示.总体流程是1)把DEM数据导入P ...

  5. chm文件打开空白无内容的解决办法

    今天下载了个chm文件,但是打开空白,也没显示什么内容,经过一番研究之后终于可以正常显示了,下面把解决办法分享出来供大家参考下,谢谢.   工具/原料 windows7系统 chm文件 方法/步骤   ...

  6. 硬盘安装ubuntu注意事项

    按照教程 http://teliute.org/linux/Ubsetup/jichu3/jichu3.html 安装64位ubuntu的时候,因为64位版本的iso安装包里没有vmlinuz文件,而 ...

  7. CSS用Id选择器在本页写样式

    <title>静夜思</title><style type="text/css">#red{color:#ff0000; font-weight ...

  8. iOS 中使用类别简化代码开发

    最近需要一个函数,把CLLocation对象转化为NSDictionary,按照我以前的想法,我会写一个工具类,之后添加一个函数,类似这样 - (NSDictionary *)turnLocation ...

  9. hdu 1425 sort 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425 常规的方法是对输入的数从大到小进行排序(可以用sort或qsort),然后输出前m大的数. 不过 ...

  10. HDU1004 查气球

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...