我有两个javascript类
class1 = function(opt) {
function abc () {
}
function def () {
}
function xyz () {
}
};
class2 = function(opt) {
function abc () {
}
function def () {
}
function lmn () {
}
};
这两个类包含一些常用方法,如(abc,def)和一些特定方法,如(lmn,xyz)。任何人都可以建议我如何有效地将继承应用于这种情况,这样我就可以在一个文件中使用通用方法,并在各个文件中使用特定方法。我尝试了原型方法,但这不起作用。那么还有其他方法吗? 感谢。
答案 0 :(得分:0)
Javascript没有类
但是你可以将你的代码系统化.Javascript继承与其他语言完全不同。
在这里,我们使用原型和构造函数。
** prototype ==> **简单来说,我用于扩展目的
** constructors ==> **我用于创建多个实例。可以使用new关键字将任何函数用作构造函数。
只需提供代码以便理解。
样本1:使用对象立方体
var Myobject = {
Function_one: function()
{
//some code
Myobject.function_three();
},
Function_two: function()
{
//some code
Myobject.function_three();//lets say i want to execute a functin in my object ,i do it this way...
},
Function_three: function()
{
//some code
}
};
window.onload = Myobject.Function_one //this is how you call a function which is in an object
示例2:使用原型
function function_declareVariable()
{
this.a= 10; //i declare all my variable inside this function
this.b= 20;
}
function_declareVariable.prototype.Function_one = function()
{
//some code
Myobject.Function_three();
};
function_declareVariable.prototype.Function_two = function()
{
Myobject.Function_three();
};
function_declareVariable.prototype.Function_three = function()
{
alert(Myobject.a or Myobject.b)
//some code
};
var Myobject = new function_declareVariable();//this is how i instantiate
答案 1 :(得分:0)
根据这些类是仅共享行为(接口)还是实际上是公共类的子类,您应该分别使用mixin或prototypal继承。
原型的一个例子:
function BaseClass () {
}
BaseClass.prototype = {
abc: function () {
},
def: function () {
}
};
function class1 () {
}
class1.prototype = new BaseClass();
class1.prototype.xyz = function () {
};
function class2 () {
}
class2.prototype = new BaseClass();
class2.prototype.lmn = function () {
};
mixins的一个例子:
function BaseMixin (object) {
object.abc = BaseMixin.prototype.abc;
object.def = BaseMixin.prototype.def;
}
BaseMixin.prototype = {
abc: function () {
},
def: function () {
}
};
function class1 () {
BaseMixin(this);
}
class1.prototype = {
xyz: function () {
}
};
function class2 () {
BaseMixin(this);
}
class2.prototype = {
lmn: function () {
}
};