まず、JavaScriptはクラスレス言語であることを理解していると言いたいと思います。私のバックグラウンドは、クラスをサポートするすべての古典的なOOP言語であるJava、C ++、およびObjective-Cです。
私はWeb開発に進出しており、JavaScriptを試し、そのパターンを学んでいます。現在、JavaScriptでクラスをシミュレートするコンストラクターパターンを使用しています。
これが私の「練習」クラスです。
function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
var privateVarTest = 10;
this.getPrivateVarTest = function() {
return privateVarTest;
}
this.setPrivateVarTest = function( value ) {
privateVarTest = value;
}
}
Car.prototype.toString = function() {
return this.model + " is a " + this.year + " model and has " +
this.miles + " miles.";
}
var myCar = new Car( "Ford Focus", "2006", "65,000" );
document.getElementById('notepad').innerHTML += '</br> Testing </br>';
document.getElementById('notepad').innerHTML += myCar.toString() + '</br>';
document.getElementById('notepad').innerHTML += myCar.model + '</br>';
document.getElementById('notepad').innerHTML += myCar.getPrivateVarTest() + '</br>';
myCar.setPrivateVarTest( 20 );
document.getElementById('notepad').innerHTML += myCar.getPrivateVarTest() + '</br>';
作成されたオブジェクトprototype
ごとに関数の新しいバージョンをインスタンス化しないため、関数を定義する方法を使用するのが好きです。Car
ただし、従来のOOP言語では、変数private
を作成public
し、必要に応じてこれらの変数を設定および取得するための関数/メソッドを作成します。
JavaScriptはクラスレスなので、この使用法にはキーワードがないprivate
か、キーワードがないので、変数を「偽造」する方法を試してみようと思いました。そのとき、必須の代わりに使用すると、外部からアクセスできなくなりますが、私は私ができるゲッターとセッターを定義することができます。public
private
var
this
constructor
さて、私の質問の最後に、長い間終わってすみません。経験豊富なJavaScriptプログラマーによるベストプラクティスの場合private
、他のOOP言語の標準に従うようにすべての変数を作成し、ゲッターとセッター(各オブジェクトの作成を強制するためにプロトタイプ化することはできません)を設定しますか、それともthis
キーワードを使用すると、基本的に必要なものをすべて取得して設定できprivate
、クラスに必要な内部データのハードコーディングにのみ使用できますか?
これをお読みいただき、ディスカッションにご参加いただきありがとうございます。経験豊富なWeb開発者がベストプラクティスとして使用している標準の感触をつかもうとしています。