Oop 使用extend()和include()函数向类添加属性
有人能给我解释一下下面的代码中发生了什么吗?我理解include()和exclude()的含义,但是我们何时以及为什么要使用特定的函数呢Oop 使用extend()和include()函数向类添加属性,oop,javascript,javascript-framework,Oop,Javascript,Javascript Framework,有人能给我解释一下下面的代码中发生了什么吗?我理解include()和exclude()的含义,但是我们何时以及为什么要使用特定的函数呢 var Class=函数(){ var klass=函数(){ this.init.apply(this,arguments); }; klass.prototype.init=函数(){}; klass.fn=klass.prototype; //访问类的快捷方式 klass.fn.parent=klass;//我们在哪里使用它? //添加类属性 klass
var Class=函数(){
var klass=函数(){
this.init.apply(this,arguments);
};
klass.prototype.init=函数(){};
klass.fn=klass.prototype;
//访问类的快捷方式
klass.fn.parent=klass;//我们在哪里使用它?
//添加类属性
klass.extend=函数(obj){
var extended=obj.extended;//这里发生了什么?
用于(obj中的var i){
klass[i]=obj[i];
}
if(extended)extended(klass)//不理解这部分
};
//添加实例属性
klass.include=功能(obj){
包含的var=包含的obj;/??
用于(obj中的var i){
klass.fn[i]=obj[i];/??
}
如果(包括)包括(klass)/??
};
返回克拉斯;
};
var Person=新类;//这与:var Person=new Class()相同;
他是从他那里得到的。目的是演示如何实现Javascript类,以及如何使用适当的模块化和继承。作者的解释非常抽象,没有具体说明是否使用了Prototype.js之类的库
我认为这个问题的一个好补充是:
- 这一切看起来都像本地Javascript吗
- Javascript的extend/extended和include/included是本机方法吗
Person.extend({
extended: function(klass) {
console.log(klass, " was extended");
}
});
因此,如果我们在一个参数对象中有一个“扩展”属性,我们称它为。想提供我对它的理解。我将把它分成两部分:定义和实现(或使用)。 按照您上面引用的定义,我将添加用法作为此代码:
var Person = new Class;
Person.extend({
find: function(id) { /* definition */
},
exists: function(id) { /* definition */
}
});
Person.include({
save: function(id) { /* definition */
},
destroy: function(id) { /* definition */
}
});
var person_e = Person.find(1);
var person_e = Person.exists(2);
var person = new Person;
person.save();
person.destroy(2);
请参见此代码与上一代码的连续性。
我试着列举发生了什么:
您是从
Prototype.js
获得的吗?如果您知道这段代码何时可以解决特定的问题,那么掌握或理解这段代码并不复杂。只有一个问题:您希望此代码做什么?