klass.extend = function(obj){
var extended = obj.extended;//其实还有这一句,也不是很清楚它的用意
for (var i in obj){
klass[i] = obj[i];
}
if(extended) extend(klass)//就是这句不明白
};完全代码是:var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
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)
};
return klass;
};
javascript类库 类 属性
解决方案 »
- 我用的是DW开发工具。我想右键单击。上下文就显示刷新
- 开发大型网站如何架构
- js连接Access数据库,不知道是那里的问题,就是连接不上去,还请高手帮忙看一下!
- firefox row
- 我有几个文字做到层里了,怎么能限制这个层的拖动范围,并取到这个层随意在这个限制区域拖动的坐标?
- onclick的问题。。高手帮忙
- jq如何根据html内容确定是否存在元素
- 如何可以将其他网站的一个页面自动保存到一个txt文件中呢?
- 谁有下拉菜单例子,发个代码来看看,最好有xml支持,维护比较方便的那种。
- 高手快进来看看!!!!
- javascript函数中利用createElement生成的标签如何赋予css样式?
- Extjs可以很好的嵌入的ocx控件吗
extended 等于 obj.extended,可以使function 也可以是其他对象要看obj的extended的具体指向if (extended) extended(klass)//就是这句不明白
如果extended 不是undefined 、false,0就执行extended即,执行的问题obj.extended(klass);从字面上(class,extend)理解,这些做了部分面向对象语言的语法的工作。这是基于原生js对js的类面向对象的模拟。
就是像请教obj.extended(klass)的用意是什么呢?
为什么把klass还作为了参数了呢?
对象继承机制。在Ruby对象被继承和模块被包含是会触发事件的。从而可以实现动态代码注入的效果。
下面是一个小例子var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
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)
};
return klass;
};
var Animal = new Class;
Animal.prototype.init = function(name){
this.name = name;
};var CommonUtils = {
extended : function(klass){
console.log('MixIn is extend');
//为klass动态注入方法
klass.fn['say'] = function(){
console.log('hi my name is :' + this.name);
}
}
}Animal.extend(CommonUtils);
var cat = new Animal('mimi');
cat.say();
目前我知道的只有Ruby有这个特性。所以多学一门语言很有好处,可以开阔你的眼界。Ruby是一门很
值得学习的语言,很适合做一些日常小工具。
var extended = obj.extended;//其实还有这一句,也不是很清楚它的用意
for (var i in obj){
klass[i] = obj[i];
}
if(extended) extend(klass)//就是这句不明白
}extended的作用就是如果一个对象被继承完成之后如果想做一些事情就需要实现这个方法,这是一种约定方式,或者可以理解为某对象继承了obj对象完成之后通知obj,如果要做一些额外的事情可以这个时候做了,通知的方式则是大家约定好的借口,也就是是否拥有extended方法。
例如:obj对象想被继承成功后写个log,obj.extended = function() {console.log('被继承成功。');}
klass.extend = function(obj){
var extended = obj.extended;//获取参数的obj的extended属性的值(这个属性的值如果存在,其实是一个function),并赋值给extended变量
for (var i in obj){
klass[i] = obj[i];
}
if(extended) extended (klass)//如果extended 变量的值不为undefined,则调用这个方法(其实就是obj.extended)
};
谢谢啊,这种说法我大概能理解了,好像回调一样是吧,谢谢你和xingqiliudehuanghun
for (var i in obj){
klass[i] = obj[i];
}
if(extended) extend(klass)//如果有extended的定义,则调用函数 extend