请问在百度里的一个JS源码类的继承,这些代码和prototype.js库里的很相似,我看了半天不知它们是如何实现的
var Class=function(){
var _class=function(){
this.initialize.apply(this,arguments)
};
for(i=0;i<arguments.length;i++){
superClass=arguments[i];
for(member in superClass.prototype){
_class.prototype[member]=superClass.prototype[member]
}
};
_class.child=function(){
return new Class(this)
};
_class.extend=function(f){
for(property in f){
_class.prototype[property]=f[property]
}
};
return _class
};这是一个类,
然后新建一个对象:
var Popup=new Class();
但这个Popup这里却又不是对象,后面还有
Popup.prototype={
initialize:function(config){}
};
这样,才可new出一个对象来:var po=new Popup();
而且在上面Popup.prototype={
initialize:function(config){}
};
这个代码里一定要定义initialize:function(config){}
这个函数才能new 成功,
不知这是如何实现的。
请高手赐教
var Class=function(){
var _class=function(){
this.initialize.apply(this,arguments)
};
for(i=0;i<arguments.length;i++){
superClass=arguments[i];
for(member in superClass.prototype){
_class.prototype[member]=superClass.prototype[member]
}
};
_class.child=function(){
return new Class(this)
};
_class.extend=function(f){
for(property in f){
_class.prototype[property]=f[property]
}
};
return _class
};这是一个类,
然后新建一个对象:
var Popup=new Class();
但这个Popup这里却又不是对象,后面还有
Popup.prototype={
initialize:function(config){}
};
这样,才可new出一个对象来:var po=new Popup();
而且在上面Popup.prototype={
initialize:function(config){}
};
这个代码里一定要定义initialize:function(config){}
这个函数才能new 成功,
不知这是如何实现的。
请高手赐教
1、先看看 obj.prototype 的定义2、JS 类的实现主要有两种方式 前期绑定 和后期绑定
前期绑定 就是在定义内部定义类成员(属性和方法)
后期绑定 就是先定义类型,在为该类型绑定相应的成员3、JavaScript 对象就是字典分析
先定义 Class 类,实际是内嵌一个 _class 类,_class 有两个静态成员 child 和 extend//实例化
var Popup=new Class(); //采用后期绑定为 Popup 对象绑定 initialize 实例方法
Popup.prototype={
initialize:function(config){}
}; //由于JS里 对象和类名、函数名等概念很模糊可以通用,因此下面拿 Popup 实例作为类,又实例化出一个 po 对象
var po=new Popup(); 其它代码不完成就分析到这了
个人不喜欢这种写法,我采用的是与 C# 类似语法来写 JS