1.安装好SQLServer 2005数据库软件,接着最重要的就是安装数据库驱动SQL Server 2005 driver for JDBC,可以到:http://download.microsoft.com/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF3690EF/sqljdbc_1.2.2323.101_enu.exe下载
2.将JDBC解压到任意的位置,在安装目录里找到sqljdbc.jar文件,以前的文章中已经讲过环境变量的配置,这里要加一点,在classpath里再加上sqljdbc.jar的路径,比如C:\Program Files\Java\sqljdbc_1.2\enu\sqljdbc.jar;
3.设置SQLEXPRESS服务器:
a. 打开SQL Server Configuration Manager -> SQLEXPRESS的协议 -> TCP/IP
b. &n ......
1.安装好SQLServer 2005数据库软件,接着最重要的就是安装数据库驱动SQL Server 2005 driver for JDBC,可以到:http://download.microsoft.com/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF3690EF/sqljdbc_1.2.2323.101_enu.exe下载
2.将JDBC解压到任意的位置,在安装目录里找到sqljdbc.jar文件,以前的文章中已经讲过环境变量的配置,这里要加一点,在classpath里再加上sqljdbc.jar的路径,比如C:\Program Files\Java\sqljdbc_1.2\enu\sqljdbc.jar;
3.设置SQLEXPRESS服务器:
a. 打开SQL Server Configuration Manager -> SQLEXPRESS的协议 -> TCP/IP
b. &nbs ......
5、用 构造函数+原型 定义一个类;同一构造函数可以定义出多个类型
/**
* $define 写类工具函数之二
* @param {Object} constructor
* @param {Object} prototype
*/
function $define(constructor,prototype) {
var c = constructor || function(){};
var p = prototype || {};
return function() {
for(var atr in p)
arguments.callee.prototype[atr] = p[atr];
c.apply(this,arguments);
}
}
与第四种方式类似,仍然用构造函数,原型对象,定义两个类。
//构造函数
function Person(name) {
this.name = name;
}
//原型对象
var proto = {
getName : function(){return this.name},
setName : function(name){this.name = name;}
}
//定义两个类
var Man = $define(Person,proto);
var Woman = $define(Person,proto);
console.log(Man == Woman);//false,同一个构造函数(Person)定义不同的类
......
这篇开始会分析流行的js库之写类方式。各种库的写类方式虽然千奇百怪,但仍然逃离不了本质---用构造函数和原型
来组装类。
6、Prototype.js的写类方式
//prototype.js中的代码
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
//简化后的
function Clazz() {
return function(){
this.initialize.apply(this,arguments);
}
}
如下步骤写一个类,
//类名Person
var Person = Class.create();
//通过原型重写来定义Person
Person.prototype = {
initialize : function(name) {
this.name = name;
},
getName : function() {
return this.name;
},
setName : function(name) {
this.name = name;
}
}
//创建对象
var p = new Person("jack");
console.log(p.constructor == Person);//false
initialize完成对象的初始化(相当于构造函数),方法依次往下写即可。
有个问题,通过这句p.constructor ==
Person为false可以看到,这正是Prototype.js一个小小的缺陷。原因是重写了Person的原型。为了使constructor能指
向正确的构 ......
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 = "Person";
//定义构造器及方法
var proto = {
constructor : function(name){this.name=name;},
getName : function(){ return this.name;},
setName : function(name){ this.name = name;}
}
//定义类Person
dojo.declare(className,null,proto);
//创建一个对象
var p = new Person("tom");
console.log(p.getName());//tom
p.setName("jack");
console.log(p.getName());//jack
//测试instanceof及p.constructor是否正确指向了Person
console.log(p instanceof Person);//true
console.log(p.constructor === Person);//true
......
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,{
constructor : function(name) {this.name = name;},
setName : function(name) {this.name = name;},
getName : function() {return this.name;}
});
//创建一个对象
var p = new Person("Lily");
console.log(p.getName());//Lily
p.setName("Andy");
console.log(p.getName());//Andy
//测试instanceof及p.constructor是否正确指向了Person
console.log(p instanceof Person);//true
console.log(p.constructor == Person);//true
比较特殊的是,如果单纯的定义一个类,那么第一个参数永远传Object即可。 ......