3

我这里有个情况。我有两个这样定义的模块(除了javascript函数):

模块1:

define(function(){
    function A() {
        var that = this;
        that.data = 1
        // ..
    }
    return A; 
});

模块2:

define(function(){   
    function B() {
        var that = this;
        that.data = 1;
        // ...
    }
    return B; 
});

如何将两个模块都继承到其他模块中?

4

2 回答 2

4

1)在js中,一切都只是一个对象。

2)Javascript继承使用原型继承而不是经典继承。

JavaScript 不支持多重继承。要将它们都放在同一个类中,请尝试使用更好的 mixin:

function extend(destination, source) {
  for (var k in source) {
    if (source.hasOwnProperty(k)) {
      destination[k] = source[k];
    }
 }
 return destination; 
 }

 var C = Object.create(null);
 extend(C.prototype,A);
 extend(C.prototype,B);

混合:

http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

js中的继承:

http://howtonode.org/prototypical-inheritance

http://killdream.github.io/blog/2011/10/understanding-javascript-oop/index.html

于 2013-05-18T19:39:53.973 回答
0

在这里,您将演示您想要实现的功能:

var obj1 = function() {
  var privateMember = "anything";
  this.item1 = 1;
}

var obj2 = function() {
  this.item2 = 2;
}

var objInheritsBoth = function() {
  obj1.call(this); // call obj1 in this context
  obj2.call(this);
  this.item3 = 3;
}

var x = new objInheritsBoth();

console.log(x.item1, x.item2, x.item3); // 1 2 3
于 2013-05-18T20:02:37.463 回答