一起学习网 一起学习网


javascript 写类方式之六

网络编程 javascript 写类方式之六 06-22
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能指向正确的构造器,只需在原型重写时维护好constructor属性即可。

Person.prototype = {
constructor : Person,//注意这里
initialize : function(name) {
this.name = name;
},
getName : function() {
return this.name;
},
setName : function(name) {
this.name = name;
}
}

好了,这时候p.constructor == Person就是true了。

javascript 写类方式之七
、dojo.js的写类方式dojo最新是1.3.1了,记得07年时还是0.4。文档也渐渐多了起来,用dojo的也慢慢多了。dojo还发布了core版,压缩后只有27kb。dojo中用dojo.decl

javascript 写类方式之八
8、Ext.js的写类方式这里用的是Extcore3.0,Ext中用Ext.extend来定义一个类(当然它更多用来扩展一个类),Ext整个框架各种控件如Panel,MessageBox等都是用Ext.e

javascript 写类方式之九
9、YUI的写类方式这里引入的是YUI2.7.0版,只需引入yahoo.js。YUI引入了命名空间,类似于java的包。以下yahoo的工具函数包YAHOO.namespaceYAHOO.langYAHOO.lang.hasOwnPro


编辑:一起学习网

标签:方式,重写,的是,原型,只需