-1

我有两个 javascript 类作为

class1 = function(opt) {
      function abc () {
      }
      function def () {
      }
      function xyz () {
      }
};


class2 = function(opt) {
          function abc () {
          }
          function def () {
          }
          function lmn () {
          }
    };

这两个类包含一些常见的方法,如 (abc, def) 和一些特定的方法,如 (lmn, xyz)。任何人都可以建议我如何有效地将继承应用于这种情况,以便我可以在一个文件中使用通用方法并在各个文件中使用特定方法。我尝试了原型方法,但这不起作用。那么有没有其他方法可以解决这个问题。谢谢。

4

2 回答 2

0

根据这些类是共享行为(接口)还是实际上是公共类的子类,您应该分别使用 mixin 或原型继承。

原型示例:

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 () {
    }
};
于 2013-07-26T13:04:15.437 回答
0

Javascript没有类

但是您可以系统化您的代码。Javascript 继承与其他 oop 语言的继承完全不同。

在这里,我们使用原型和构造函数。

**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

REFER 1:什么是构造函数,原型

REFER 2:原型继承

于 2013-07-26T12:58:47.067 回答