Javascript继承的有效方式

时间:2013-07-26 12:51:47

标签: javascript inheritance prototypal-inheritance

我有两个javascript类

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


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

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

2 个答案:

答案 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

REFER 1:what are constructors ,prototypes

REFER 2:prototypal inheritance

答案 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 () {
    }
};