3

ここに状況があります。次のように定義された2つのモジュール(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/prototyping-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 に答える