ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptでクラスを定義する方法_基礎知識

JavaScriptでクラスを定義する方法_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:36:191110ブラウズ

これは私が最初に書いた方法です:

function Dog(){
  this.name = 'hachi';
}

Dog.prototype = {
  makeNoise:function(){
    alert('wangwangwang');
  }
};

後で、もう少し複雑で不必要に思われる別の書き方を見つけました。

function Dog(){
  var privateVariable = 'secret';

  var fn = function(){
    //...
  }

  fn.prototype = {
    makeNoise:function(){
      alert('wangwangwang');
    }
  }

  return fn;
}

ここでの Dog 関数は実際にはクラス作成関数であり、実際の Dog クラスを返します。
これを行う利点は、カプセル化が向上することだと思います。
たとえば、ここでの privateVariable はプライベート変数です:

var d = new Dog;
d.privateVariable //undefined

さらに、最初の例の最後に文を追加すると、

Dog.prototype = {
  //e...WTF??
}

こうすることで、犬はもう犬ではなくなります~

その後の理解:
新しいクラスを作成する上記のメソッドは、プロトタイプ オブジェクトを直接オーバーライドします。このようにして、プロトタイプの元の組み込み属性 (引数、呼び出し、適用など) はなくなります。
新しいクラスを作成する次の方法の方が良いと思われます:

var Dog = function(name){
  this.name = name;
  var privateVariable = 'you cannot see me.';
  this.getPrivate = function(){return privateVariable;};
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。