JAvascript prototypeに基づいてOOP継承のような方法を実現

1186 ワード

この例では、javascriptがprototypeに基づいてOOP継承のような方法を実装する方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
ここで説明するのは、公有属性(this.修飾子を使用)は上書きできますが、プライベート属性(var修飾子を使用)は上書きできません.
子クラスは親のプライベート属性にアクセスできません.親メソッドは通常、親のプライベート変数にアクセスします.

function Vegetable(){
  this.taste='delicious';
  var a = 'I\'m Vegetable\'a!'
  this.fun1 = function(){
    alert('Vegetable fun1 doing...');
  }
  this.fun3 = function(){
    alert(a);
  }
}
function Celery(){
  var a = 'I\'m Celery\' a';
  this.color = 'green';
  this.taste = 'bad';
  this.fun1a = function(){
    alert('Celeryfun1 doing...');
  }
  this.fun2 = function(){
    alert('Celery fun2 doing...');
  }
  this.fun4 = function(){
    alert(a);
  }
}
Celery.prototype = new Vegetable();
var stick = new Celery();
var polymorphed = stick.taste;
//alert(polymorphed);
//alert(stick.color);
//stick.fun1();
//stick.fun2();
//stick.fun3();
stick.fun4();

JavaScriptプログラムの設計に役立つことを願っています.